Formular zur Daten-Eingabe erstellen
Vorab bemerkt
In beispielsweise einer Adress-Tabelle stehen in der ersten Zeile die Überschriften und in den folgenden Zeilen die einzelnen Positionen. Zur Eingabe von Daten suchen sich die Anwender dann die erste freie Zeile und geben dort die entsprechenden Werte ein.
Nun ist es heutzutage fast schon Standard, dass die Eingabe von Daten in einer Maske erfolgt. Das sieht nicht nur schöner aus, es ist auch praktischer. So lassen sich in dieser Umgebung seitens des Programms auch leichter Überprüfungen der eingegebenen Werte auf Korrektheit durchführen.
Excel bietet auch diese Möglichkeit. Allerdings gilt hier prinzipiell die gleiche Einschränkung wie bei praktisch jedem anderen Programm: Das Ganze muss von Hand über die Programmier-Umgebung erst einmal erschaffen werden. Eine wirklich primitive „Maske”, die Excel auch zur Dateneingabe anbietet, soll an dieser Stelle außen vor gelassen werden. Sie erfüllt nicht die Funktionalität, die gewünscht ist. Falls Sie es dennoch probieren wollen, hier werden Sie beim Stichwort Datenmaske fündig.
Die Tabelle
Grundlage für alle Daten ist eine Tabelle. Dort werden die Daten geschrieben und verwaltet. Dort stehen in den Spalten auch die Überschriften, welche die Bedeutung der Werte darunter erklären. Um für diesen Exkurs eine Basis zu haben, bieten wir Ihnen eine kleine, vorgefertigte Tabelle als Muster an. Sie finden diese hier zum Download. Wichtig sind erst einmal nur die Überschriften, weil diese als Bezeichner in die UserForm (die Maske) übernommen werden. Das Formular ist hier noch nicht integriert.
Die leere Maske
Ganz zu Beginn muss erst einmal das Gerüst geschaffen werden. Und das ist das Fenster, welches eine leere Maske enthält. Und dazu ist es erforderlich, dass Sie in die Programmier-Umgebung gelangen. In allen Excel-Versionen geht das recht einfach per AltF11. Es zeigt sich nun dieses Bild, wenn noch keine Makros in dieser Mappe verwendet werden:
Hinweis: Alle hier folgenden Abbildungen sind mit der Version Excel 2010 erstellt worden. Prinzipiell sollte sich in allen anderen Versionen die Ansicht gleichen. – Klicken Sie zu Beginn auf den nach unten zeigenden Pfeil in dem hierüber markierten Bereich. Dann wird sich dieses Bild zeigen:
Da Sie ja ein Formular, eine UserForm oder auch eine Maske erstellen wollen, ist die oberste Auswahl genau die richtige.Danach zeigt sich dann solch ein Bild:
Sehr auffällig sind die beiden neuen Fenster. Das aktive Fenster (blaue Titelleiste) UserForm1 sowie die Werkzeugsammlung. Auf den ersten Blick nicht so ins Auge stechend ist der neue Eintrag in der Auflistung der einzelnen Objekte des Projekts; direkt unter dem Eintrag Tabelle3 (Tabelle3) steht nun (markiert) die UserForm1. Dort führen Sie einen Doppelklick aus, wenn Sie programmiertechnisch einmal an anderer Stelle waren und hierher zurückkehren wollen.
Die Werkzeugsammlung beinhaltet alles, was Sie zur Gestaltung der Maske brauchen. Damit erstellen Sie die Beschreibenden Texte, Eingabefelder und vieles andere mehr. Um Ihnen einen Überblick der wichtigsten Möglichkeiten zu geben, sind in den folgenden Abbildungen die einzelnen Möglichkeiten schon markiert und darunter kurz beschreiben. Wenn Sie tiefer in die Materie einsteigen werden Sie auch weitere, nicht bildlich dargestellte Möglichkeiten kennen lernen. Ein Beispiel dafür wäre das letzte Symbol, das Kalender-Steuerelement.
Der Pfeil dient dazu, entweder die Größe der Form an sich zu verändern oder Objekte (Elemente) innerhalb der Maske zu markieren und dann beispielsweise zu verschieben.
Der offizielle Ausdruck dafür ist Label, es ist einfach nur eine Überschrift oder der Beschreibungstext, welchen Sie auch formatieren können.
Werkzeug
Das Textfeld dient zur Eingabe von Texten. Das sind Worte, Zahlen, Zeichen, … Aber keine Bilder.
Kombinationsfeld nennt sich dieses Objekt. DropDown ist vielfach auch genutzt. Hier wird zu Beginn nur eine Zeile angezeigt und nach einem Klick auf ▼ klappt die Auswahl wie ein Rollo herunter.
Bei einem Listenfeld werden einen vorgegebene Anzahl von Zeilen immer angezeigt. Es können auch nur jene Einträge gewählt werden, die auch in dem Objekt aufgeführt sind.
Ein Kontrollkästchen steht für sich alleine oder mit weiteren da und kann unabhängig mit einem Häkchen aktiviert sein oder nicht. Es können also auch mehrere Kontrollkästchen einer Gruppe aktiviert sein.
Das Optionsfeld hingegen tritt prinzipiell immer mehrfach in einer Gruppe auf. Die Eigenheit ist, dass beim Klick auf ein anderes Optionsfeld der gleichen Gruppe die Markierung wechselt. Wie bei den Programmtasten eines Radios. Das erklärt auch die vielfach genutzte Bezeichnung RadioButton.
Dieser Rahmen wird meist eingefügt, bevor eine Gruppe von Feldern erstellt wird. Werden Optionsfelder dort hinein eingefügt, dann sind diese automatisch dieser Gruppe zugefügt.
Unerlässlich sind auch die Schaltflächen. Oft wird auch der englische Ausdruck Button genutzt.
Interessant kann ein Drehfeld sein. Damit wird in einem verbundenen Textfeld der Wert automatisch um eine gegebene Schrittweite erhöht oder vermindert. Zusätzlich sind Grenzwerte möglich.
Der Vollständigkeit halber: Bilder (z.B. ein Logo) können Sie auch in eine UserForm einfügen.
Das Formular mit „Leben” füllen
Zuerst werden Sie darüber nachgedacht haben, welche Felder Sie überhaupt brauchen. Ich lege mir das immer schriftlich fest, das erleichtert anschließend die Arbeit enorm. Über den Feld-Typ mache ich mir erst bei der Erstellung (also jetzt) Gedanken. Typischerweise beginne ich mit der Überschrift in der Form. Dazu klicke ich auf das Symbol des Textfeldes in der Werkzeugsammlung und ziehe es entweder in die Form oder ich klicke das Symbol einfach an und positioniere dann in der UserForm …
… durch einen weiteren Klick. Der leere Rahmen des Labels ist dann sichtbar und kann mit Text gefüllt werden. Ich klicke immer ein Mal auf den Label und wähle nach einem Rechtsklick die Eigenschaften aus dem Kontextmenü aus. Das könnte dann so aussehen:
Auch wenn es verführerisch ist: (Name) | Label1 ist nicht der Text des Labels sondern der programmiertechnische Name. Den können Sie gerne so lassen. Caption ist aber das, wonach Sie vielleicht suchen. Das ist der Text, der dann als Überschrift oder auch Beschreibungstext erscheint. Formatierungen sind möglich, insbesondere über die Auswahl Font und ForeColor. Mit etwas Übung werden Sie sich rasch da hinein finden.
Fügen Sie dann das jeweilige Label und gleich anschließend das entsprechende Textfeld an der gewünschten Position ein. Wenn es noch nicht so ganz passt, dann lassen sich die Elemente noch gut verschieben. Das Ganze könnte nun so aussehen:
Wenn Sie meinem Text genau gefolgt sind, dann fehlt ja auch noch die Anrede. Das wird im Endeffekt ein Kombinationsfeld, aber das würde für diesen Ersten Teil zu tiefgreifend sein. Darum ziehen Sie mit dem Pfeil-Werkzeug einen (fast unsichtbaren) Rahmen um alle Elemente unterhalb der Überschrift und ziehen Sie diese so weit nach unten, dass Platz für eine Zeile mit der Anrede ist. Fügen Sie dann Label und Textfeld ein. Zum guten Schluss noch je eine Schaltfläche OK und Abbrechen.
Damit ist der Rohbau des Gebäudes fertig. Zugegeben, da ist noch keinerlei Funktionalität drin, im besten Fall können Sie dort Daten eingeben. Aber Sie haben noch keine Möglichkeit, die Inhalte in die Tabelle zu bringen. Aber das ist einem weiteren Teil dieser Übung vorbehalten.
Um das einigermaßen stilvoll abzurunden, sollten Sie den beiden Schaltflächen (soweit vorhanden) noch eine Funktionalität mitgeben. Ich selbst verwende für die Buttons stets den Präfix cmd (für CommandButton), andere Programmierer verwenden vielfach btn (für Button, um die phonetische Ähnlichkeit zu cmb, also die ComboBox/Kontrollfeld zu vermeiden). Als Namen gebe ich hier dann meist cmd_OK und cmd_Cancel vor.
Natürlich wollen Sie das dann auch so ansehen und vielleicht auch ausprobieren. Dazu fügen Sie in die Tabelle eine kleine Prozedur ein:
Option Explicit Sub FormularZeigen() UserForm1.Show End Sub
Diese Routine binden Sie entweder an eine Schaltfläche (das geht so) oder Sie rufen das Modul über AltF8 auf. Anschließend wird sofort das Formular erscheinen.
Nach einem Doppelklick auf die jeweilige Schaltfläche erscheint dann der VBA-Editor und bietet auch gleich den ersten und nach einem weiteren Klick auf den anderen Button den zweiten Prozedur-Rumpf an. Dort schreibe ich dann hinein:
Private Sub cmd_OK_Click() MsgBox "Schaltfläche " & Chr(34) & "OK" & Chr(34) & " gedrückt" End Sub Private Sub cmd_Cancel_Click() Unload UserForm1 End Sub
Voraussetzung ist natürlich, dass die UserForm auch diesen Namen hat. Diesen Stand der Dinge können Sie hier herunter laden.
Weiter mit diesem Thema geht es hier, allerdings mit anderen Daten (also mit einer anderen Maske). Der Abschnitt kann auch separat abgearbeitet werden.
Letzte Änderung/Erweiterung: 07.12.2014
[NachObenLetzte Verweis=„ML: UFo (1)”]