Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Excel 2016 VBA für Profis

Listenfeld füllen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Listenfelder sind optimal geeignet, um Elemente einer Auflistung, etwa von Tabellenblättern, anzuzeigen.

Transkript

Dieses Dialogfeld ist jetzt soweit vorbereitet, dass da beliebige Zeilen in der Liste stehen. Wenn ich das jetzt nochmal starte mit F5, sehen Sie ganz lieblos 1,2,3. Da darf jetzt natürlich was Vernünftiges drin stehen. So braucht man das nicht im wirklichen Leben. Ich könnte mir zum Beispiel vorstellen, dass der Benutzer hier aus den Tabellenblättern auswählen darf. Da gibt es noch nichts auszuwählen, das können wir gleich noch verbessern. Und alle Tabellennamen, die hier stehen, möchte ich hier auflisten. Also hier abbrechen und mit Alt+F11 erst mal rüber in die Tabellenansicht, und dann kann ich hier mit Pluszeichen anklicken erst mal ein paar Tabellenblätter anlegen. Völlig egal, wie viele, und die werde ich auch mutwillig umbenennen. Die nennen wir vielleicht mal Drei, mit Doppelklick, "Das ist die Vier", und die werden wir boshaft nach hinten schieben, damit nicht die zufällige Reihenfolge noch funktioniert, und "Noch eine Tabelle", und die benennen wir mal als "Fünf ist Trümpf" So, da ist jetzt maximaler Unsinn drin sozusagen, - können das gerne ein bisschen rüber schieben- und diese Tabellen möchte ich gern auflisten, sodass der Benutzer die auswählen kann. Mit Alt+F11 wieder in den VAB-Editor, und ich muss in dem Code zu Userform "Initialize". Also mache ich irgendwo hier, nicht hier übrigens, hier liegt ein Label, wenn ich das mal so anklicke, da sollte man immer aufpassen, dass man das nicht erwischt, sondern hier im Userformbereich mache ich einen Doppelklick, lande im Userform "Initialize", und kann das außer der ersten Zeile schon mal löschen. Was ich jetzt brauche, ist eine Schleife, und ich nehme am liebsten "for each"-Schleifen, weil die nämlich dann das Objekt enthalten. Und "for each"-Einzelobjekt in Auflistung brauche ich immer eine Einzelobjektvariable. Deswegen habe ich mir hier schon Platz geschaffen, "dim" und das Einzelobjekt, was ich haben möchte, ist eine Tabelle oder als Datentyp eben ein Worksheet-Objekt, deswegen "wks" als Präfix und dann heißt es bei mir ganz lieblos "dieses", wenn es keinen tieferen Sinn hat, was ich damit machen will, das ist einfach dieses, was ich gerade in der Hand habe, "As Worksheet", denke sie dran der Singular, ein einzelnes Objekt. Und dann kann ich hier schreiben, "for each"-Einzelobjekt in Auflistung, also "for each wksDieses in" - und da können sie sich jetzt entscheiden, entweder "ThisWorkbook", das ist diese Arbeitsmappe, die den Code enthält, oder, was die meisten schreiben, "ActiveWorkbook", das ist die Arbeitsmappe, die der Benutzer sieht, die also gerade offen ist, und auch vorne liegt. Das ist ein Unterschied, in diesem Fall ist es egal, weil "ThisWorkbook" auch gleichzeitig "ActiveWorkbook" ist. Aber im normalen Leben müssen Sie aufpassen, wenn Sie die Datei meinen, in der sich Ihr Code befindet, weil Sie dort beispielsweise bestimmte Daten auslesen wollen, dann ist das zu Testzeiten häufig auch die aktive Arbeitsmappe. Aber dann sollte sie auch explizit "ThisWorkbook" schreiben. Ich sage jetzt die offene, die aktive Arbeitsmappe, aus der will ich die Tabellen auslesen, also deren Worksheetsauflistung. Das Einzige, was ich jetzt hier brauche, da muss ich ein bisschen Abstand machen, und das "next" nicht vergessen. Das Einzige, was ich jetzt brauche, ist diese Methode, um neue Zeilen hinzuzufügen, aber da will ich natürlich nicht eins, zwei, drei reinschreiben, sondern ich frage jemanden, wie diese Tabellen gerade heißen. Und der, den ich fragen kann, ist dieses Einzelobjekt, das besitzt nämlich, wie jedes Worksheet-Objekt, eine Name-Eigenschaft. Das war es schon. Damit habe ich also in einer Schleife automatisch alle Namen der vorhandenen Tabellen, und ich hoffe mal, dass wenigstens eine Tabelle da ist, deswegen werde ich die erste markieren, -nein, ich kann sogar sicher sein, dass eine Tabelle da ist, dieses ist eine Auflistung, die nicht leer sein kann. Eine Datei muss immer ein Tabellenblatt enthalten. Also kann ich das ungeprüft auf "ListIndex=0" setzen, sprich den ersten markieren. Dann erstens speichern, man sollte nie ungespeichert testen, zweitens "Debuggen" "Kompilieren", und drittens mit F5. Los geht's! Und da sehen sie jetzt die Tabellen in dieser hier zu sehenden Reihenfolge. Sie haben gesehen, mit sehr sehr wenig Aufwand. Und wenn wir das hier schon so schön da stehen haben, die lassen sich also wunderbar auswählen, da kann man jetzt nichts mehr falsch machen als Benutzer. Dann kann ich hier da vorne auch noch schreiben, was ich sehe, also dieses Objekt heißt ja "lblAuswahl", und ich werde jetzt noch ergänzen, dass "me.lblAuswahl.Caption" -mit Tab auswählen-, dass da steht wie viele Tabellenblätter vorhanden sind. Da frage ich jemanden, der was davon versteht, nämlich "me.ListAuswahl", und die kennt eine, nicht "count", das würde man vermuten, weil viele Auflistungen eine Count-Eigenschaft haben, sondern die heißt "ListCount". Das ist die Anzahl der Objekte da drin, "verkettet mit", Gänsefüßchen und ein Leerzeichen, damit die Zahlen nicht so dranklemmen, und dann schreibe ich "Tabellen" davor. Und jetzt speichern, Kompiliercheck, F5, sehen Sie jetzt hier sieben Tabellen. Das kann man sehr unauffällig, sehr nebenbei machen, für den Benutzer mal eben anzeigen, gerade wenn das sehr viele sind, hat er schon mal ein Gefühl dafür, und Sie sehen, das kostet eine Zeile Aufwand. Und das Ganze lässt sich noch ein bisschen schöner schreiben, das ist mehr Codeschönheit als wirklich notwendige Verbesserung. Sie sehen hier "Me.lstAuswahl, Me.lstAuswahl, Me.lstAuswahl", das kommt ziemlich häufig vor, ich schneid' da schon mal raus - Strg+X, und schreibe jetzt davor diese "with"-Konstruktion, "mit diesem Objekt", alles dazwischen wird eingerückt, mit der Tab-Taste, wenn's markiert ist und "end with". Also, so gehe ich mit gedrückter Umschalt-Taste und Cursor nach unten, kann mit Tab einrücken und mit Umschalt+Tab wieder ausrücken. Und alles, was da drin "Me.lstAuswahl" ist, schmeiße ich raus, und zwar nicht zwingend am Anfang. Häufig ist der Punkt, der da natürlich übrig bleiben muss am Anfang, aber wie Sie hier sehen, ist das nicht notwendig. Also, wo ein führender Punkt steht, wird dieses Objekt ergänzt. Das liest sich häufig kürzer, weil sie Zeilen, in denen mehrfach "Me.lstAuswahl" vorkommt, -das passiert schon mal relativ schnell - die dann deutlich verkürzt werden. Speichern und F5, Sie sehen, es funktioniert immer noch. Also zusammen mit Listboxen oder auch mit Comboboxen tauchen fast automatisch eigentlich immer Schleifen auf, um diese zu füllen, und ich mache das dann gerne mit einer "for each"-Schleife, dann ist nämlich das Objekt selber immer sehr schön griffig zu benutzen, und man muss nicht das so und sovielste Item von irgendwas zählen.

Excel 2016 VBA für Profis

Nutzen Sie die Möglichkeiten der Programmiersprache VBA in Excel 2016, um eigene Dialoge zu erstellen, auf andere Arbeitsmappen zuzugreifen und wichtige Funktionen einzusetzen.

5 Std. 52 min (55 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Ihr(e) Trainer:
Erscheinungsdatum:25.01.2017
Laufzeit:5 Std. 52 min (55 Videos)

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!