VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind...

22
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-eingaben und Mausklicks aufzeichnen, dann ist der Makrorecorder genau das richtige Werkzeug.

Transcript of VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind...

Page 1: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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.

Page 2: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 3: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

VBA – Visual Basic for Applications

Tabellenkalkulation / VBA

HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert

Page 4: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 5: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 6: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 7: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 8: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 9: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

VBA – Visual Basic for Applications

Tabellenkalkulation / VBA

HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert

Page 10: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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)

Page 11: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 12: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 13: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 14: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 15: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 16: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 17: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

HS-OWL – Fachbereich Bauingenieurwesen – Grundlagen der Bauinformatik© Dipl.-Ing. Thomas Schubert

VBA – Visual Basic for Applications

Das erste Programm - Deklarationsteil

Wichtige Datentypen

Wichtige Datentypen

Page 18: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 19: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 20: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 21: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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

Page 22: VBA Visual Basic for Applications – Visual Basic for Applications Objektorientierte Programme sind nach demselben Muster organisiert. Objekte im Zusammenhang mit Excel sind dann

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