Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Excel 2013 VBA für Profis

Listenfeld einsetzen

Testen Sie unsere 2017 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Anstatt eine ganz freie Eingabe zu erlauben, ist es meistens sinnvoller, den Benutzer auf eine Auswahl passender Daten zu beschränken. Dann brauchen die Eingaben nicht nachträglich überprüft zu werden.

Transkript

Ein Eingabefeld ist natürlich für den ersten Blick die praktischste Lösung, aber tatsächlich nicht. Als Programmierer müssen Sie nämlich immer damit leben, dass da jemand irgendwas reinschreibt, was Sie nicht wollen. Sie erwarten Zahlen, da stehen aber Texte drin. Sie erwarten ein Datum, aber es ist der 35. April. Sie erwarten eine Auswahl aus, sagen wir, Dateinamen und es schreibt jemand einen nicht vorhandenen Dateinamen rein. Sinnvoller ist es also meistens, die Eingabe zu begrenzen, sprich auch die Auswahl stark einzuschränken. Und dafür muss man einfach nur andere Elemente nehmen, nämlich entweder die ComboBox, das Kombinationsfeld oder das Listenfeld, also die ListBox, die ich deswegen hier nehme, weil genug Platz da ist. Die sind sich sonst technisch sehr, sehr ähnlich. Also ein ListBox-Element, das braucht hier dann einfach ein bisschen mehr Platz. Sieht erstmal sehr ähnlich aus, wird aber zeilenweise Inhalte enthalten. Und damit schon zu sehen ist, dass es eine ListBox ist, werde ich die also mit dem Präfix lst bezeichnen. Und dann sagen wir ruhig schonmal Details, da wird es nochmal was Übergeordneteres geben. Und dann soll die mit Daten gefüllt werden. Das geht tatsächlich nur zur Laufzeit. Ich muss also auf UserForm_Initialize zurückgreifen. Ein Doppelklick hier, dann bin ich dort in UserForm_Initialize, und kann jetzt fast beliebig davor oder danach für die Inhalte dieser Liste sorgen. Ich mache erstmal ganz banal me.lstDetails.AddItem, heißt das, und dann schreiben wir mal "Zeile 1", und direkt dahinter me.lstDetailsAddItem "Zeile 2". Das können wir noch ein bisschen fortführen. Das soll aber erstmal reichen. Und wenn Sie das jetzt mit F5 starten, sehen Sie, dass diese Liste direkt anklickbare Zeilen enthält. Und das bietet langfristig den Vorteil, wenn Sie von einem Benutzer irgendwas Bestimmtes wollen, zum Beispiel eine Auswahl aus diesen drei Angaben, dann kann er jetzt gar nichts falsch machen. Er kann schlechtestenfalls keine auswählen, aber er kann nicht eine falsche auswählen, die es nicht gibt. Keine, das müssen Sie nochmal beobachten, wenn das jetzt neu gestartet wird, sollten wir vielleicht verhindern. Also einfach neu starten, und Sie sehen, es ist noch keine ausgewählt. Dann sollte eigentlich auch die OK-Schaltfläche nicht aktiv sein. Das ist die eine Möglichkeit. Die wird erst aktiv, wenn ich hier eine auswähle. Die andere Möglichkeit ist, ich wähle hier direkt eine aus. Ich werde Ihnen beides vorführen. Also diese Schaltfläche wird deaktiviert, Enabled heißt das, und zwar Enabled auf False. Das sehen Sie auch hier schon. Und dann muss ich dafür sorgen, dass beim Klick in diese Liste, die Schaltfläche wieder aktiviert wird. Also Sie können erstmal einen Doppelklick hier machen. Dann sind Sie direkt in lstDetails_Click, der Klick auf diese Liste. Und dann erkläre ich jetzt, sobald einer da klickt, wird me.btnOK.Enabled auf True gesetzt. Können Sie jeweils mit Tab-Taste auswählen, das geht aber relativ schnell. Tatsächlich wird bei jedem Klick in die Liste die Enabled-Eigenschaft der Schaltfläche OK auf True gesetzt, und zwar auch dann, wenn Sie schon True ist. Das ist aber nicht wirklich schlimm. Das geht erstens schnell und tut keinem weh. Wir können also einmal testen. Es ist nichts aktiv. Wenn ich jetzt einen anklicke, wird sie aktiv, und ich kann den nächsten anklicken, die wird immer noch aktiv, aber, wie gesagt, das sieht keiner. Das ist die eine Variante. Funktioniert wunderbar. Wenn Sie es gern anders haben wollen, und das kann ich durchaus so lassen, dann muss ich im Initialize, nachdem ich die Liste fertiggemacht habe, einfach dafür sorgen, dass die eine bestimmte Auswahl kriegt. Also me.lstDetails.ListIndex setze ich einfach auf einen Wert. Der Index zählt ab 0. Also die Zeile 1 hat den Wert 0. Wenn ich die Zeile 2 auswählen will, dann ist es der ListIndex=1. Und das sorgt jetzt dafür, speichern nicht vergessen, dass von diesen drei Zeilen die zweite mit dem Index 1 ausgewählt ist. Einmal F5 zum Testen. Und Sie sehen, ohne dass ich was klicken muss, ist das direkt ausgewählt. Und weil das ausgewählt wurde, ist es auch direkt OK. Damit ist diese Liste schon funktionsfähig, auch wenn die Inhalte noch nicht so hilfreich sind. Aber Sie sehen schon, wieviel einfacher es ist eine Liste zu organisieren, die nur noch vorgegebene Werte enthält, anstatt sich nachträglich bei freier Eingabe damit herumzuärgern, was der Benutzer denn nun so frei da eingegeben hat.

Excel 2013 VBA für Profis

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

4 Std. 59 min (53 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!