HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
Tabellenkalkulation / Funktionen
VBA – Visual Basic for Applications
VBA auf einfache Art und Weise nutzen … Der Makro-Recorder von EXCEL
Möchte man mal eben einfache Arbeitsschritte automatisieren oder einfach nur Tastatur-eingabenund Mausklicks aufzeichnen, dann ist der Makrorecorder genau das richtige Werkzeug.
VBA – Visual Basic for Applications
VBA gilt als leistungsfähige Skriptsprache und ist die am häufigsten verbreiteteMöglichkeit, auf Microsoft-Office-Anwendungen (Excel, Word, Access etc.) basierendeProgramme zu erstellen. VBA ist eine interpretierende Programmiersprache, derenSyntax der von Visual Basic entspricht. Die Möglichkeiten und die Leistungsfähigkeitvon VBA ist allerdings gegenüber Visual Basic deutlich anwendungsorientiert.
Der Zugriff über VBA auf das jeweilige Wirtsprogramm (Word, Excel etc.) erfolgt übereine meist gut dokumentierte Programmierschnittstelle. In den jeweiligenAnwendungen stehen neben dem VBA-Kern (Kontrollstrukturen, Datentypen,mathematische Funktionen, Dateisystem) spezielle Objekte des Wirtsprogramms zurVerfügung. Diese Objekte ermöglichen es, Abläufe des jeweiligen Wirtsprogramms zuautomatisieren.
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Das Verständnis von Objekten und die Kenntnis der Objektmodelle ist eine Voraussetzung,um mit VBA erfolgreich programmieren zu können. Objekte sind logische Einheiten, die manprogrammieren und steuern kann. Der Zugriff auf jedes Datum, jede Funktion und jedenProzeß erfolgt über ein Objekt.
Unter einem Objekt versteht man üblicherweise etwas gegenständliches, z.B. ein Haus. Eshat bestimmte Eigenschaften und es gibt bestimmte Dinge, die man damit machen kann, alsoMethoden, die darauf anwendbar sind.
Die meisten Eigenschaften sind veränderlich, z.B, Wert, Wohnfläche (Ausbau desDachgeschosses), Farbe, Eindeckung, etc. Diese Objekteigenschaften beschreiben daskonkrete Objekt. Erst sie machen es möglich, sich eine konkrete Vorstellung von dem Objekt zumachen.
Objektorientierte Programmierung
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
Tabellenkalkulation / VBA
VBA – Visual Basic for Applications
Objektorientierte Programmierung
Auf ein Objekt sind bestimmte Methoden anwendbar. Das Haus kann man beispielsweisebewohnen. Man kann es heizen, anstreichen, umbauen usw. Andere Methoden dagegensind nicht anwendbar. Man kann z.B. nicht damit fahren. Dafür wäre dann das Objekt Autogeeignet. Dieses Objekt hat aber wieder ganz andere Eigenschaften.
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Objektorientierte Programme sind nach demselben Muster organisiert. Objekte imZusammenhang mit Excel sind dann z.B. eine Excel-Mappe, ein Tabellenblatt, eine Zelle,eine Grafik oder ein Diagramm. Typische Eigenschaften einer Zelle sind der Schrifttyp, dieHintergrundfarbe, die Ausrichtung usw. Für eine Mappe sind "Öffnen" und "Schließen"charakteristische Methoden. Verallgemeinert sind Objekte eines Programms durch Daten(das sind die Eigenschaften) und Funktionen (in VBA auch Methoden genannt) bestimmt.Nur die zu einem Objekt gehörenden Funktionen können auf die Datendieses Objektes zugreifen und diese ändern. Ein anderer Zugriff ist nicht möglich,d.h. die Daten eines Objektes sind vor unqualifizierter Manipulation geschützt (Datenkapselung).
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Beipiele:
Objekt.Objekt. Der Bereich "A1:B2" in einem Tabellenblatt. Dem Bereich kann ein symbolischerName, d.h. eine Variable, zugewiesen werden, um die weitere Programmierung zuvereinfachen:
Dim Auswahl As RangeSet Auswahl = Worksheet("Tabelle1").Range("A1:B2")
Die erste Zeile vereinbart das Objekt Auswahl vom Typ Range, das geeignet ist, einenTabellenbereich darzustellen. Die zweite Zeile weist dem Objekt den Bereich"A1:B2" des Tabellenblattes mit dem Namen Tabelle1 zu.
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Methode.Methode. Der Bereich wird mit einer speziellen Anweisung, d.h. Methode, markiert,die nur in Verbindung mit dem Objekt anwendbar ist.Auswahl markieren mit der Methode Select:
Auswahl.Select
Eigenschaft.Eigenschaft. Die Farbe des Hintergrundes ist z.B. eine Eigenschaft. Farbe ändern mit:
Auswahl.Interior.ColorIndex = 8
Das Wort Interior bezeichnet das Innere,d.h. den Hintergrund, des Zellbereiches. DerHintergrund selbst wiederum ist ein Objekt. ColorIndex ist der Name eines der möglichenAttribute, bzw. eine Eigenschaft des Objektes Interior. Der Wert der Eigenschaft ist 8, dasentspricht der Farbe Zyan.
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Tabellenkalkulation / VBA
EXCEL-VBA - Objekthierachie
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
Beispiel für die Bezeichnung eines Objektes: Workbook(Mappe1).Worksheet(Tabelle1).Range(A1:C5)
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
Tabellenkalkulation / VBA
VBA – Visual Basic for Applications
Die VBA - Entwicklungsumgebung
CODEFENSTER
Projektfenster (Project-Explorer)
Eigenschaftenfenster
Überwachungsfenster
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Das erste Programm
Im Gegensatz zu den bereits vorhandenen Excel-Objekten Mappe und Tabelle mussdas eigene VBA-Programm als Modul einfügt werden …
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Das erste Programm
Dieses Modul kann jetzt im Codefenster des VBA-Arbeitsbereiches mit Inhalt gefülltwerden. Um einen strukturierten und auch später nachvollziehbaren Programmcodezu erstellen, sollte man sich an folgende Gliederung halten.
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Das erste Programm - Kommentare
Um Kommentare in einen Programmcode einzufügen, benutz man das einfache Hoch-komma „ ' “ oder das Schlüsselwort Rem (wie remark).
Kommentare werden automatisch in grüner Schrift gekennzeichnet
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Das erste Programm - Deklarationsteil
In VBA stehen natürlich die Zellen als Objekte zur Verfügung und können mit Inhaltenbelegt werden. Dieses Verfahren wäre aber sehr umständlich und schreibintensiv.Statt dessen ist es möglich, sog. Variablen zu benutzen. Die den Variablen zuge-wiesenen Inhalte werden irgendwo im Arbeitsspeicher aufbewahrt und stehen beiBedarf wieder zur Verfügung.
Beispiel:mein_Wert=25Ergebnis=mein_Wert*5
Variablen dürfen (fast) beliebige Namen bekommen, einige Zeichen sind allerdings nichtzulässig. Dazu gehören
- Leerzeichen, sämtliche Sonderzeichen wie !,?,%,$,& usw.- deutsche Umlaute- EXCEL-Funktionsnamen und -befehle
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Das erste Programm - Deklarationsteil
In VBA unterscheidet man - wie auch in fast allen anderen Programmiersprachen -zwischen verschiedenen Datentypen. Wenn man einer Variable also nur Zahlenzuweisen muss, sollte man sie auch vorher so deklarieren, denn das spart enorm vielArbeitsspeicher und erhöht die Geschwindigkeit. Gerade in VBA ist es für Einsteiger oftschwer, zu begreifen, warum man eine Variable deklarieren muss.
Das liegt daran, das VBA standardmäßig jede Variable, die nicht zuvor deklariert wurde,automatisch dem Datentyp "Variant" zuordnet. Doch Vorsicht: Dieser Datentypverbraucht enorm viel Speicher, da man mit ihm sowohl wie mit numerischen Datentypenrechnen kann, aber ihm auch Zeichenfolgen zuweisen kann. Deklarieren Sie alsomöglichst jede Variable vorab. Durch Angabe der Zeile "Option Explicit" am Anfangeines Moduls werden Sie automatisch darauf hingewiesen, wenn eine Variable nichtdeklariert wurde.
In folgender Tabelle sind die wichtigsten Datentypen zusammengestellt ...
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Das erste Programm - Deklarationsteil
Wichtige Datentypen
Wichtige Datentypen
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Das erste Programm - Deklarationsteil
option explicit
Dim Farbe as BytePublic Einkommen as doublePrivate Hinweis as stringStatic Geburtstag as date
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Das erste Programm - Prozeduren
Prozeduren dienen in VBA als Mittel zur Strukturierung und zum Einsatz z.B. beiwiederholt auftretenden Aufgaben.
Die allgemeine Syntax lautet
Sub Name(Parameterliste)DeklarationsteilAnweisungsteil
End Sub
Die Parameterliste istoptional, die Klammernnicht!
Die Schlüsselwörter einer Prozedur werden blau dargestellt.
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Das erste Programm – das erste Beispiel
Aufgabenstellung: Das Volumen eines Zylinders soll berechnet werden. Die Formel lautet;
V = A * h mit A=Grundflächeh=Höhe
A berechnet sich nach folgender Formel (Kreisfläche): A = π * Durchmesser d² / 4
'Programm zur Berechnung von Kreisdaten Fläche A / Umfang U'bei geg. Durchmesser
Dim d, h As DoubleDim A, V As Double
Sub mein_Kreis()d = 10 'Vorgabe für dA = d ^ 2 * 3.141526 / 4
End Sub
Sub mein_zylinder()h = 1 'Vorgabe für hCall mein_Kreis 'Berechnung für A ausführenV = A * hDebug.Print V 'Ausgabe im DirektfensterEnd Sub
*verkürztes Beispiel ausder Vorlesung
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Das erste Programm – Funktionen
Jede Funktion besitzt wie eine Variable einen bestimmten Datentyp, der hinter „as“angegeben wird. Funktionen werden im Allgemeinen dazu verwendet, einen Wert zuberechnen. Sie liefern diesen Rückgabewert in ihrem Namen zurück, nachdem er ihneninnerhalb der Funktion zugewiesen wurde.
Die allgemeine Syntax lautet
Function Name(Parameterliste) as DatentypDeklarationsteilAnweisungsteil
End function Function kreisflaeche(dm) As Double
kreisflaeche = dm ^ 2 * WorksheetFunction.Pi() / 4
End Function
Sub mein_zylinder()h = 1V = kreisflaeche(10) * hDebug.Print V
End Sub
Beispiel:
Tabellenkalkulation / VBA
HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert
VBA – Visual Basic for Applications
Das erste Programm
Wichtige Eigenschaften für Objekte auf unterster Hierachieebene sind:
.value Wert, Inhalt
RANGE(''A1'').VALUE=125A=CELLS(1,2).VALUE
Wichtige Methoden für Objekte auf unterster Hierachieebene sind:
.delete Inhalte löschen
RANGE("A1:D10").DELETE
.clearcontents Formeln löschen
RANGE("A1:D10").CLEARCONTENTS
Tabellenkalkulation / VBA