In meinem Blogbeitrag “Integrierte Eingabemaske in Excel” habe ich gezeigt, dass es in Excel bereits eine Eingabehilfe gibt.
Eine UserForm in der VBA-Programmierung ist im Prinzip nichts anderes. Auch sie dient zum Eingeben von Daten, aber in einer auf deine Bedürfnisse zugeschnittenen Datenmaske.
Wie eine UserForm erstellt und angewendet wird, zeigt dieser Beitrag.
1. Arbeitsmappe erstellen
Um die erfassten Daten an eine Arbeitsmappe zu übertragen, benötigst du natürlich eine solche.
Erstelle deshalb eine Excel-Arbeitsmappe und speichere sie z.B. unter dem >Namen “Kundendaten.xlsm” ab.
Richte die Kopfzeile im Arbeitsblatt “Tabelle1” etwa so ein:
Du brauchst hier nur noch einen CommandButton für das Öffnen der UserForm. Weise ihm später, wenn du die UserForm erstellt hast, dieses Makro zu:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
2. Eine UserForm erstellen
Öffne den VBA-Editor über das Menü Entwicklertools / Code / Visual Basic. Rufe unter “Einfügen” UserForm auf.
Mit der Blanko-UserForm öffnet sich gleichzeitig die Werkzeugsammlung.
Einen generellen Vorschlag mache ich dir: Lasse die Namen der Label, TextBox und CommandButton in den Eigenschaften unverändert, das kann die beim Programmieren hilfreich sein.
Gebe der UserForm eine neue Überschrift. Klicke in die UserForm und ändere in den Eigenschaften unter “Caption” den Eintrag “UserForm1” z.B. in “Kundendaten”.
Mit der UserForm sollen Kundendaten aufgenommen werden:
- Name
- Vorname
- Straße
- Haus-Nr.
- PLZ
- Ort
Diese Begriffe sollen in die UserForm mit jeweils einem Beschriftungsfeld (Label) fest eingefügt werden. Rechts daneben soll jeweils ein Textfeld (TextBox) die Eingabe ermöglichen.
Schließlich brauchst du im unteren Bereich nochzwei Befehlsschaltflächen (CommandButton), um entweder die Daten zu übernehmen oder den Vorgang abzubrechen.
Vergrößere die UserForm durch Ziehen am unteren Rand.
Ein Label ist in der Werkzeugsammlung mit “A” gekennzeichnet. Füge also zunächst sechs Label in die UserForm eoin. Auf “Schönheit” kommt es hierbei noch nicht an.
Verschiebe die Label jetzt so, dass sie den gleichen Abstand zum linken Rand und zueinander haben, das Raster der UserForm hilft dir dabei.
Klicke in das Label und setze den Cursor hinter den Text, z.B. Label1, Label2 usw. Ersetze die Texte nun durch deine Vorgaben, wie Name, Vorname usw.
Verkleinere abschließend die Breite der Label, weil die Einträge recht kurz sind, z.B. auf 50. Klicke dazu auf das Label und ändere die Breite in den Eigenschaften unter “Width”.
Die Bezeichnungen kannst du übrigens auch in den Eigenschaften unter “Caption” vornehmen oder ändern.
Füge als nächstes sechs TextBox in die UserForm ein. Die TextBox findest du in der Werkzeugsammlung unter “abl”.
Verschiebe die TextBox jetzt so neben die Label, dass wieder gleiche Abstände bestehen.
Erhöhe die Breite in den >Eigenschaften / Width einheitlich auf z.B. 120 oder lege die Breiten individuell fest.
Füge zum Schluss zwei CommandButton ein (gekennzeichnet mit “ab”), richte sie aus unter benenne unter “Caption” CommandButton1 um in “Daten übernehmen” und CommandButton2 in “Abbrechen” um.
Deine UserForm sieht jetzt etwa so aus:
3. Daten erfassen und an Arbeitsmappe übertragen
Was soll passieren, wenn du die UserForm geöffnet und den ersten Datensatz eingegeben hast? Der Datensatz könnte jetzt in deine vorgefertigte Tabelle übertragen werde.
Danach könntest du die UserForm wieder aufrufen und den nächsten Datensatz eingeben.
Der CommandButton1 in der UserForm (“Daten übernehmen”) erhält für die Übertragung der eingegebenen Daten in die Arbeitsmappe “Kundendaten” einen Code.
Gehe dazu in den VBA-Editor und rufe die UserForm1 auf.
Klicke mit der rechten Maustaste in den CommandButton1 (“Daten übernehmen”) und klicke auf “Code anzeigen”.
Vorgegeben steht dort bereits:
Private Sub CommandButton1_Click()
End Sub
Vervollständige den Code nun so:
Private Sub CommandButton1_Click()
Dim N As String
Dim V As String
Dim S AS String
Dim H As String
Dim P As String
Dim O As String
N=TextBox1.Text
V=TextBox2.Text
S=TextBox3.Text
H=TextBox4.Text
P=TextBox5.Text
O=TextBox6.Text
Worksheets(„Tabelle1“).Select
Cells(1048576,1).End(xlUp).Offset(1,0)=N
Cells(1048576,2).End(xlUp).Offset(1,0)=V
Cells(1048576,3).End(xlUp).Offset(1,0)=S
Cells(1048576,4).End(xlUp).Offset(1,0)=H
Cells(1048576,5).End(xlUp).Offset(1,0)=P
Cells(1048576,6).End(xlUp).Offset(1,0)=O
Unload Me
End Sub.
Über den Befehl End(xlUp) sucht Excel die unterste gefüllte Zelle einer Spalte.
Mit Offset (1,0) geht Excel in die nächste (leere) Zeile und nimmt die Eintragung vor.
Achte bitte darauf, dass im “Tabellenblatt1” keine Eintragungen unterhalb der Kundenliste vorhanden sind, denn “End(xlUp)” sucht die unterste gefüllte Zelle einer Spalte!
Mit der Anweisung “Unload Me” im Code wird die UserForm geschlossen.
Willst du weitere Eingaben tätigen, rufe die UserForm wieder durch Klick auf den CommandButton “UserForm aufrufen” auf.
Willst du das nicht, schieße die UserForm durch Klick auf den CommandButton “Abbrechen”.
Entdecke mehr von Clevercalcul
Subscribe to get the latest posts sent to your email.