Excel 2016 VBA für Profis

Listenfeld einsetzen

LinkedIn Learning kostenlos und unverbindlich testen!

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

Transkript

Auf den ersten Blick scheint so ein Eingabefeld eine gute Lösung zu sein; der Benutzer kann genau eingeben, was er möchte. Und das ist genau das Problem: Er kann eingeben, was Sie nicht möchten. Sie bitten Ihn um ein Datum und er schreibt "Heute", das ist ein Text, oder "den 35.April". Sie hätten gerne eine Zahl, aber ohne Nachkommastellen; er macht Nachkommastellen. Sie hätten gerne einen Dateinamen und er liefert Ihnen einen Dateinamen, aber leider gibt es den gar nicht. Das gibt viel Ärger und deshalb ist es viel einfacher, nicht die Benutzereingabe hinterher zu prüfen, sondern vorher einzuschränken; zum Beispiel, indem Sie nur eine Liste aller möglichen Werte oder aller zulässigen Dateinamen vorgeben. Eine Liste gibt es in zwei Varianten: einmal hier als Combo-Box, Kombinationsfeld, das ist eine Kombination aus einer Eingabe und Ausklappfeld, oder wenn man ein bisschen Platz hat, ist das ein wenig eleganter, einer Listbox, ein Listenfeld. Die benutze ich jetzt hier, also ein Klick hier, und dort, auch wenn ich die Breite gar nicht brauche, lege ich das mal, dass es optisch passend wirkt, in gleiche Breite. Sieht auf den ersten Blick genauso aus, aber dieses ist eine einzeilige Eingabe und dieses ist eine mehrzeilige Auswahl. Auch da gehört ein Label daneben, also, ich schreibe es jetzt mal daneben; ein "lblAuswahl", weil nämlich hier dann die List-- "lstAuswahl" schreibe ich jetzt, die ist im Moment nur beispielhaft, Sie sehen, das Label ist noch nicht durchsichtig, transparent und ich werde jetzt hier als "Caption" so etwas eintragen: "Beliebige Auswahl", das ist wahrscheinlich eh zu knapp. Da würde ich also dann doch, aus Gründen der Schönheit, ein Klick, ein Umschalt+Klick, hier beide ein wenig schmaler machen; man kann das dann hier ein wenig breiter ziehen. Da kann man lange rumspielen, dass es schön wird, nur dass Sie das Konzept sehen. Die Listauswahl möchte ich mit Werten füllen und das geht ausschließlich zur Laufzeit, nicht im Entwurf, und zwar genau mit diesem UserForm "Initialize", was wir schon einmal eingesetzt hatten. Also per Doppelklick kann ich hier im UserForm "Initialize", mit ein wenig Abstand, diese Liste füllen. Die heißt "me.lstAuswahl." damit habe ich schon ihren Namen und benutze die Methode "AddItem", und dann sage ich einfach, was ich da reinschreiben möchte, jetzt einen völlig beliebigen Text. Damit Sie sehen, dass es mehrere Zeilen werden, muss ich jetzt entsprechend auch mehrere auswählen. Ich schreib da mal ganz lieblos "1,2,3," rein. Sie können das auch kopieren und Sie ahnen schon, langfristig macht man das natürlich mit Schleifen. Und wenn wir das gespeichert haben, vielleicht noch mal Kompiliercheck. Alles korrekt, dann kann man es mit F5 anschauen und Sie sehen: 1,2,3. Das lässt sich beliebig verlängern, wenn der Platz alle ist, dann erscheint hier auch automatisch ein Rollbalken und Sie können nach oben und unten rollen, scrollen, wie immer Sie das nennen. Jetzt möchte ich da etwas auswählen, das ist technisch schon möglich, aber ich darf erst auf "OK" klicken, wenn ich hier etwas ausgewählt habe, und das ist noch nicht sauber gemacht, da gibt es zwei Varianten: Entweder das, was ich eben gesagt habe; ich darf erst auf "OK" klicken, wenn ich etwas ausgewählt habe, oder ich wähle direkt was aus, dann werde ich e nämlich gar nicht mehr los. Ich fange mit der ersten Variante an, das bedeutet, die "OK"-Schaltfläche ist grundsätzlich deaktiviert oder im Englischen "Eigenschaften, Bezeichnung" heißt das "Enabled" gleich, Doppelklick, "False". Und dann muss ich hier entsprechend nur für diese Listbox ein Ereignis, Doppelklick, nämlich das Click-Ereignis nutzen, und wenn jemand draufklickt, wird dieser Button "OK" wieder "Enabled = True", das Gegenstück; also, "me.btnOK.Enabled=True". Das kann man schon mal testen, also mit F5, nichts ist ausgewählt, das ist der Startzustand, sobald ich jetzt einen anklicke, wird die im Moment deaktivierte "OK"-Schaltfläche sofort aktiv. Danach, auch wenn ich noch mal draufklicke, kann ich nicht deaktivieren, ich kann immer nur einen anderen auswählen, obwohl jetzt immer wieder der Button "OK" auf "Enabled = True" gestellt wird. Obwohl er das schon ist, macht das nichts, das geht so schnell, das interessiert niemanden. Es bleibt aber dabei, wenn ich das mit F5 starte, ist noch nichts ausgewählt, und die andere Variante besteht darin, dass man direkt beim Start etwas auswählt. Ich sag einfach mal den Eintrag mit der Nummer 2; also ["initialize"]. Nachdem das alles ausgeführt ist, sage ich, ich hätte gerne von der Liste "Auswahl", den List-Index, also, die wievielste Zeile markiert ist, den würde ich gerne auf das zweite Element setzen, da er mit 0 beginnt, schreibe ich hier jetzt also 1. Und nach dem Speichern, wenn ich das mit F5 starte, ohne irgendetwas anzuklicken, ist bereits das zweite Element mit der List-Index Nummer 1 markiert. Und damit ist auch die "OK"-Schaltfläche schon aktiviert, denn ich habe sozusagen den Click hier ausgeführt. Ich werde den Inhalt dieser Liste jetzt so nicht übernehmen, das wäre genauso eine "value"-Eigenschaft, sondern es soll hier nur zu sehen sein, dass statt einer allzu freien Eingabe es durchaus sinnvoll sein kann, die Eingabe zu begrenzen. Jetzt kann mein Benutzer nur noch unter diesen drei Werten auswählen und ich kann, sozusagen, nichts mehr falsch machen.

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:
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.01.2017

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!