Excel 2013 VBA Grundkurs

Mit Auflistungen programmieren

Testen Sie unsere 1983 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Obwohl in Auflistungen völlig unterschiedliche Objekte enthalten sein können, ist der Umgang mit ihnen sehr einfach und vor allem einheitlich.

Transkript

Ich möchte Ihnen nun zeigen, wie Sie konkret innerhalb eines VBA-Programms mit Auflistung umgehen. Dafür brauchen wir erstmal eine Auflistung. Und die einfachste, die Sie in Excel haben können - ich gehe mal mit Alt + F11 rüber - ist die Auflistung der Tabellen. Da können wir ruhig noch mal ein paar dazu nehmen, nach Herzenslust. Und Sie sehen jetzt schon, die sind scheinbar in der Reihenfolge auch durcheinander. Scheinbar deswegen, weil die Namen eigentlich uninteressant sind und die Reihenfolge sich natürlich jederzeit ändern lässt. Hier sehen Sie, da stehen sie wieder in einer richtigen Reihenfolge. Es gibt also einen Unterschied zwischen der Reihenfolge in der Auflistung und der, die Sie möglicherweise im Augenschein haben. Also, fangen wir erstmal an mit dem Auflistungsobjekt selber. Wir fragen uns einfach mal, wie viele Tabellen es eigentlich gibt. Also, Sub WieVieleTabellen und praktischerweise können wir das hier oben immer im Vergleich prüfen. Das ist der Name, den der Benutzer sieht, in Klammern, und das ist so ein interner Name. Das geht direkt in einer Zeile, Debug.Print. Jetzt müssen wir nur wissen, wem die Liste aller Tabellen gehört. Die Objekte von oben herab wären ja Application. Da könnte ich jetzt ganz oben ansetzen, Punkt. Und würde dort entdecken, es gibt eine Workbooks-Auflistung. Dann müsste ich aber wissen, welches von den Workbooks, ich kann hier oben sogar den Namen nachgucken. Aber das können wir viel einfacher machen. Fragen Sie einfach nach Active. Active ist immer gut. Und dann gucken wir mal, was es so im Angebot gibt. ActiveWorkbook z.B. Das ist die Datei, die der Benutzer sieht. Wenn Sie es noch genauer haben wollten, dann würden Sie ThisWorkbook angeben. Das ist dasjenige, in dem sich der Code befindet. Aber typischerweise arbeitet man eher mit ActiveWorkbook. Denn es geht ja um Sachen, die der Benutzer auslösen möchte. Und da drin gibt es eine Worksheets-Auflistung. Es gibt auch eine Sheets-Auflistung selber, die enthält auch Diagramme. Aber ich habe hier sowieso nur Worksheets, also Tabellen. Und damit haben wir jetzt das Auflistungsobjekt, um das es geht. Und das frage ich jetzt nach der Anzahl seiner Mitglieder, und das ist die Count-Eigenschaft. Das war es schon. Vielleicht noch schnell speichern. Und mit F5 sehen Sie dann, es gibt sieben Tabellen. Also, das Auflistungsobjekt selbst kennt - dieses zwar relativ viel - aber typischerweise die Count-Eigenschaft und sonst kaum mehr. Mehr brauchen Sie auch nicht. Jetzt können wir einmal fragen, wie die letzte Tabelle heißt. Also, Sub - fangen wir vielleicht mit dem Namen der ersten an - NameDerErstenTabelle, der ist nämlich einfach. Also, wieder mit Debug.Print. Wir fragen das gleiche Objekt. ActiveWorkbook, Strg + Leertaste zum automatischen Ermitteln des kompletten Namens. Da drinnen gibt es eine Worksheets-Auflistung. Und dessen - da müssen wir jetzt immer raten. Ich weiß es einfach schon, Worksheets sind Eins-basiert, dessen erstes Objekt trägt wirklich die Nummer Eins. Und dessen Name-Eigenschaft. Worksheet ist so ein bisschen unscharf. Das ist lästig, wenn man nicht weiß, ob es die Eigenschaft gibt oder nicht. Bei Name kann ich Ihnen sicher versprechen, die gibt es, und nach dem Speichern mit F5 sehen Sie unten, die heißt "Tabelle 1". Das lässt sich übrigens verbessern (dieses Problem, dass Sie nicht wissen, ob es die Name-Eigenschaften gibt), wenn Sie anständige Datentypen deklarieren. Ich habe das jetzt kopiert, muss deswegen natürlich den Namen ändern. Ich erfinde jetzt eine Variable und zwar eine Worksheet-Variable. Die nenne ich mal ganz lieblos wksDiese As Worksheet und greife dieses hier raus. Das können wir schon mal ausschneiden. Und kann jetzt mit Set wksDiese gleich das zuweisen. Soweit hat sich nichts geändert. Eigentlich ist es erstmal nur mehr Aufwand geworden. Ich habe eine Worksheet-Objekt-Variable gemacht und dieser das Objekt, nämlich das Worksheet, zugewiesen. Der Unterschied ist jetzt, wenn ich diese nutze wksDiese, Strg + Leertaste. Habe ich einen Schreibfehler, deswegen hat er es nicht erkannt. Wenn ich jetzt den Punkt mache, weiß dieser Datentyp dieser Variable, dass es z.B. eine Name-Eigenschaft gibt. Viel viel einfacher, wenn Sie sich mit den Objekten und deren Eigenschaften noch nicht so auskennen. Name kann man immer raten. Aber es gibt viele andere, die man schon konkret wissen muss. Dann vereinbaren Sie den ordentlichen Datentyp und weisen das zu. Und dann sehen Sie auch hier, was es kann. Das liefert jetzt das gleiche Ergebnis, wenn ich jetzt F5 drücke. Da ist also immer noch "Tabelle 1" drin. Es ist ein bisschen mehr Schreibaufwand, aber dafür erstens besser zu lesen, und zweitens sicherer zu programmieren. Aber ich wollte ja die letzte Tabelle haben, also einfach kopiert und dann hier der letzten Tabelle und zwar gleich in der besseren Version. wksDiese ist dabei. Jetzt muss ich aber an dieser Stelle sagen: ich hätte gerne nicht das erste, sondern das letzte. Na ja, das ist relativ einfach. Sie fragen einfach, wie viele haben wir denn und deren Count-Eigenschaft entspricht, weil es Eins-basiert ist, auch der Anzahl der Tabellen. Also, wenn ich sieben Tabellen habe, dann ist die Count-Eigenschaft 7 und das siebte Objekt ist dann das letzte. Es können wir ja mal probieren. Also mit F5. Da steht jetzt "Beispiel". Das ist die Tabelle, die hier hinten an letzter Position steht. Also, alles korrekt. Alt + F11. Und wir haben jetzt hier sozusagen "sauber" den Namen der letzten Tabelle ermittelt. Das geht noch einen kleinen Hauch besser. Bei der Gelegenheit möchte ich Ihnen eine Schreibweise vorstellen, die gerade im Zusammenhang mit dieser langen Bezeichnung sehr praktisch ist. Und zwar steht hier zweimal das gleiche Objekt drin. Und das werde ich jetzt sozusagen ausklammern. Ich hole das hier schon mal raus. Und davor schreiben With diesem Objekt und End With. Überall, wo das Objekt jetzt vorkommt, habe ich es rausgenommen. Noch nicht überall, aber fast überall. Und jede Bezeichnung, die mit einem führenden Punkt beginnt, ersetzt das in Gedanken. Das Problem ist, ich kann den hier natürlich wegnehmen, aber dann fehlt mir der führende Punkt. Ich muss also hier nur deswegen mal ausnahmsweise Item schreiben und kann jetzt hier entsprechend das wegnehmen. Es wird also jetzt von diesem Objekt ActiveWorkbook.Worksheets das Item benutzt, und dessen. Count-Eigenschaft. Funktioniert wie vorher, aber Sie sehen, diese ewig lange Zeile wird deutlich verkürzt. Allerdings natürlich um den Preis, dass Sie jetzt drei Zeilen haben. Wenn Sie allerdings für dieses Objekt noch mehr ändern wollen: seinen Namen ändern, seine Farbe oder was weiß ich alles. Ja ich weiß, ein Worksheet hat keine Farbe, aber bei anderen Objekten. Dann lohnt es sich schon, das so auszuklammern. Nur damit Sie sehen, dass es immer noch funktioniert, einmal F5. Nach dem OK natürlich wollte ich den Namen noch geändert haben. So, und jetzt funktioniert es aber mit F5. Da steht wiederum "Beispiel". Also die lange Zeile wird verkürzt und dafür gibt es dann mehr Zeilen. Wir haben uns also lang getastet, von der Auflistung insgesamt und ihrer Count-Eigenschaft zu einem Ihrer konkreten Objekte, und das immer neutraler beschrieben. Ich habe nicht gesagt, dass ist das siebte, sondern ich habe gesagt, es ist das letzte Objekt. Das bedeutet, auch wenn ich jetzt mit Alt + F11 hier ein neues anfüge. Ich ziehe die mal nach hinten gedrückt und umbenenne: "Ich bin neu". Dann kann ich das hier laufen lassen und werde jetzt mit F5 diesen neuen Namen sehen. Also deswegen diese neutrale Formulierung, dass es immer funktioniert. So geht man mit Auflistung um. Entweder Auflistungsobjekt als Ganzes oder ein Teilobjekt. Und weil dort oft sehr viel doppelte Schreibarbeit und Hinweise auf die Teilobjekte entstehen, kann ich diese With, End With-Schreibweise empfehlen, wo Sie das Objekt einmal nennen und dann dessen Methoden oder Eigenschaften immer mit vorangestelltem Punkt nutzen. Das darf auch mehrfach in der Zeile auftauchen, wie Sie es gerade sehen.

Excel 2013 VBA Grundkurs

Holen Sie aus Excel 2013 mit der integrierten Programmiersprache VBA auch das letzte Quäntchen an Funktion heraus und lassen Sie sich dazu zeigen, was alles möglich ist.

6 Std. 18 min (63 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!