Hinweise zu den Beispielen finden Sie hier: Home: VBA-Beispiele
Kategorie: Basics ▸ OOP
Immer wieder wird nach den Nachteilen von Select und Activate gefragt oder es wird darauf eingegangen. Leider wird es auch immer wieder genutzt - kein Wunder, denn selbst der Makro-Recorder zeichnet das ja so auf.
Fakt ist jedoch: Diese Anweisungen sollte man vermeiden, wo es immer geht.
Der Grund ist, dass man Blätter und Zellen immer erst aktivieren muss, wenn man mit ihnen arbeitet. Das ergibt nicht nur ein unschönes Bildschirmflackern (das man allerdings abstellen kann), sondern sorgt durch die Rechenbelastung auch dafür, dass die Routinen stark verlangsamt werden. Außerdem spart man sich viel Code, wenn man Objekte direkt anspricht; die Programmierung wird also viel übersichtlicher.
Kategorie: Basics ▸ OOP
Es ist nicht leicht, auf eine Variante ohne Select und Activate umzusteigen, aber es lohnt sich.
Vielleicht zunächst etwas Grundsätzliches:
Um objektorientiert zu arbeiten muss man wissen, was in Excel Objekte sind: Mappen, Tabellen, Spalten, Zeilen, Zellen, Userformen, usw.
Jedes Objekt hat Eigenschaften.
Das heißt, man kann die Frage stellen: Wie ist es? Im Vergleich zu einem Auto kann man also fragen: Wie ist die Farbe des Autos?
Jedem Objekt stehen aber auch Methoden zur Verfügung.
Dann kann man die Frage stellen: Was soll damit geschehen? Beim Auto wäre das: Was soll das Auto machen?
Kategorie: Basics ▸ OOP
Wenn man Objekte mit deren Methoden und Eigenschaften verbinden möchte, geschieht dies grundsätzlich mit einem Punkt. Dabei wird zuerst das Objekt geschrieben, dann der Punkt und dann die Methode/Eigenschaft.
Beispiel Methode: Auto.Fahre
Anders ausgedrückt: damit.soll das passieren
Beispiel: ActiveWorkbook.close
Also: Aktive Mappe.schließen. Das ist Objekt.Methode.
Beispiel Eigenschaft: Auto.Farbe
Weiterhin kann man auch schreiben das.soll sein = so
Beispiel: Application.ScreenUpdating = true
Also: Anwendung.Bildschirmaktualisierung = wahr. Das wäre dann Objekt.Eigenschaft.
Kategorie: Basics ▸ OOP
Viele Objekte können aus weiteren bestehen. Wenn man von einem Objekt auf ein Unterobjekt eines anderen Objektes zugreifen möchte, muss man immer zuerst das übergeordnete Objekt und dahinter mit einem Punkt das untergeordnete Objekt schreiben.
Beispiel: Ein Auto hat ein Schloss. Wenn man den Schlüssel reinsteckt, würde man schreiben:
Schloss.Öffnen
Sitzt man aber in einem anderen Auto und möchte von dort aus sein Auto mit einer Fernbedienung öffnen, müsste man schreiben:
MeinAuto.Schloss.Öffnen
Schließlich steht man ja in dem Moment nicht an seinem Auto und muss deshalb sagen, welches Autoschloss geöffnet werden soll.
Kategorie: Basics ▸ OOP
Der Punkt spielt bei Objekten immer eine zentrale Rolle. Bei den Eigenschaften kommt noch das Gleichheitszeichen hinzu.
Man nennt das Objekt, danach hinter einem Punkt die Eigenschaft und dann nach einem Gleichheitszeichen, wie die Eigenschaft sein soll.
Beispiel:
Auto.Farbe = Rot
Dies gilt in VBA sowohl für Abfragen als auch für Zuweisungen. Man kann also mit dieser Syntax abfragen, ob ein Auto rot ist; man kann aber auch dem Objekt Auto die Farbe Rot zuweisen. Wenn man von anderen Sprachen, wie zum Beispiel JavaScript oder PHP kommt, muss man dies besonders beachten.
Kategorie: Basics ▸ OOP
Zuerst drehen wir in der aktiven Mappe auf dem Blatt Tabelle1 den Text:
Worksheets("Tabelle1").Rows("1:1").Orientation = 90
Dann drehen wir in der xyz.xls, die natürlich offen sein muss, den Text:
Workbooks("xyz.xls").Worksheets("Tabelle1").Rows("1:1").Orientation = 90
Und jetzt weisen wir an, dass A1 von der Tabelle1 der aktiven Mappe in die xyz.xls in die Tabelle2 in A1 kopiert werden soll (in einer Zeile):
Sheets("Tabelle1").Range("A1").Copy _ Workbooks("xyz.xls").Worksheets("Tabelle2").Range("A1")
Das geht alles ohne Select und Activate.