VBA UserForm: Dateneingabe mit ComboBox und Validierung
UserForm-Programmierung in VBA
Hier im Fall der Aktivierung wird nur für UserForm1 verwendet.
Füllen der Elemente, die in der ComboBox1 erscheinen
Private Sub UserForm_Activate()
ComboBox1.AddItem "Rancaguita"
ComboBox1.AddItem "Santiaguitito"
ComboBox1.AddItem "Viñitita"
ComboBox1.AddItem "Concepcioncito"
ComboBox1.AddItem "Chaitencitito"
ComboBox1.AddItem "La Serena"
ComboBox1.Text = "Wählen Sie eine Option"
End SubCursorsteuerung nach Auswahl in der ComboBox
Dieses Programm wird verwendet, um den Cursor zum nächsten Steuerelement zu bewegen, wenn der Benutzer ein Element der ComboBox auswählt.
Private Sub ComboBox1_Click()
ComboBox1.Enabled = False 'Deaktiviert dieselbe ComboBox
TextBox4.Enabled = True 'Aktiviert TextBox4 (Alter)
TextBox4.SetFocus 'Setzt den Cursor auf Alter
End SubProgrammierung des Namens
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
If Not IsNumeric(TextBox1.Text) And (TextBox1.Text) <> "" Then
Dim HH As String
HH = MsgBox("OK, weiter zum nächsten Steuerelement", vbInformation, "OK")
TextBox1.Enabled = False 'Deaktiviert dieselbe TextBox
TextBox2.Enabled = True 'Aktiviert TextBox2 (Adresse)
TextBox2.SetFocus 'Setzt den Cursor auf Adresse
Else
Dim RH As String
RH = MsgBox("Fehler, bitte nur Buchstaben eingeben", vbCritical, "Warnung")
TextBox1.Text = "" 'Löscht die fehlerhafte Eingabe
TextBox1.SetFocus 'Setzt den Cursor zurück auf Name
End If
End If
End SubProgrammierung der Adresse
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
If Not IsNumeric(TextBox2.Text) Then
Dim HH As String
HH = MsgBox("OK, weiter zum nächsten Steuerelement", vbInformation, "OK")
TextBox2.Enabled = False 'Deaktiviert dieselbe TextBox
TextBox3.Enabled = True 'Aktiviert TextBox3 (Telefon)
TextBox3.SetFocus 'Setzt den Cursor auf Telefon
Else
Dim RH As String
RH = MsgBox("Fehler, bitte nur Buchstaben eingeben", vbCritical, "Warnung")
TextBox2.Text = "" 'Löscht die fehlerhafte Eingabe
TextBox2.SetFocus 'Setzt den Cursor zurück auf Adresse
End If
End If
End SubProgrammierung des Telefons
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
If IsNumeric(TextBox3.Text) Then
Dim HH As String
HH = MsgBox("OK, weiter zum nächsten Steuerelement", vbInformation, "OK")
TextBox3.Enabled = False 'Deaktiviert dieselbe TextBox
ComboBox1.Enabled = True 'Aktiviert ComboBox1 (Stadt)
ComboBox1.SetFocus 'Setzt den Cursor auf Stadt
Else
Dim RH As String
RH = MsgBox("Fehler, bitte nur Zahlen eingeben", vbCritical, "Warnung")
TextBox3.Text = "" 'Löscht die fehlerhafte Eingabe
TextBox3.SetFocus 'Setzt den Cursor zurück auf Telefon
End If
End If
End SubProgrammierung des Alters
Private Sub TextBox4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
If IsNumeric(TextBox4.Text) Then
Dim HH As String
HH = MsgBox("OK, weiter mit der Aufnahme", vbInformation, "OK")
TextBox4.Enabled = False 'Deaktiviert dieselbe TextBox
CommandButton1.Enabled = True 'Aktiviert die Schaltfläche Aufnahme
CommandButton1.SetFocus 'Setzt den Cursor auf die Schaltfläche Aufnahme
Else
Dim RH As String
RH = MsgBox("FEHLER, bitte nur Zahlen eingeben", vbCritical, "Warnung")
TextBox4.Text = "" 'Löscht die fehlerhafte Eingabe
TextBox4.SetFocus 'Setzt den Cursor zurück auf Alter
End If
End If
End SubProgrammierung der Aufnahme-Taste
Private Sub CommandButton1_Click()
'Programmierung der Design-Vorlage (Kopfzeile)
Range("B4").Value = "Name"
Range("C4").Value = "Adresse"
Range("D4").Value = "Telefon"
Range("E4").Value = "Stadt"
Range("F4").Value = "Alter"
Range("B4:F20").Borders.Value = 9 'Doppelten Rahmen um B4:F20 setzen
Range("B4:F20").Font.Bold = True 'B4:F20 fett formatieren
Range("B4:F4").Font.Size = 12 'Schriftgröße 12 für den Titel
Range("B4:F4").Interior.Color = vbBlue 'Blauer Hintergrund für den Titel
Range("B4:F4").Font.Color = vbWhite 'Weiße Schrift für den Titel
Range("B4").ColumnWidth = 18 'Spaltenbreite B (Name)
Range("C4").ColumnWidth = 18 'Spaltenbreite C (Adresse)
Range("D4").ColumnWidth = 7 'Spaltenbreite D (Telefon)
Range("E4").ColumnWidth = 15 'Spaltenbreite E (Stadt)
Range("F4").ColumnWidth = 7 'Spaltenbreite F (Alter)
Range("B5:F5").Font.Size = 10 'Schriftgröße 10 für den Inhalt
Range("B5:F20").Font.Color = vbRed 'Rote Schrift für den Inhalt
Range("B5:F20").Interior.Color = vbYellow 'Gelber Hintergrund für den Inhalt
'Hier werden die Daten aufgezeichnet
Range("B5").Select 'Zelle B5 auswählen
Selection.EntireRow.Insert 'Fügt eine Zeile ein
Sheets("Sheet1").Range("B5").Value = TextBox1 'Name in B5 speichern
Sheets("Sheet1").Range("C12").Value = TextBox2 'Adresse in C12 speichern
Sheets("Sheet1").Range("D12").Value = TextBox3 'Telefon in D12 speichern
Sheets("Sheet1").Range("E12").Value = TextBox4 'Alter in E12 speichern
Sheets("Sheet1").Range("F12").Value = ComboBox1 'Stadt in F12 speichern
Dim RR As String
RR = MsgBox("Daten aufgezeichnet", vbInformation, "Speichern")
CommandButton1.Enabled = False 'Deaktiviert die Schaltfläche Aufnahme
CommandButton2.Enabled = True 'Aktiviert die Schaltfläche Sonstige Erlöse
CommandButton3.Enabled = True 'Aktiviert die Schaltfläche Beenden
CommandButton2.SetFocus 'Setzt den Cursor auf Sonstige Erlöse
End SubButton-Programmierung Sonstige Erlöse
Private Sub CommandButton2_Click()
TextBox1.Text = "" 'Löscht TextBox1 (Name)
TextBox2.Text = "" 'Löscht TextBox2 (Adresse)
TextBox3.Text = "" 'Löscht TextBox3 (Telefon)
TextBox4.Text = "" 'Löscht TextBox4 (Alter)
ComboBox1.Text = "" 'Löscht ComboBox1 (Stadt)
CommandButton2.Enabled = False 'Deaktiviert die Schaltfläche
TextBox1.Enabled = True 'Aktiviert TextBox1 (Name)
TextBox1.SetFocus 'Setzt den Cursor auf TextBox1 (Name)
End SubProgrammierung der Exit-Taste
Private Sub CommandButton3_Click()
Dim AA As String
Dim HH As VbMsgBoxResult
AA = "John Doe"
HH = MsgBox("Diese Anwendung beenden?", vbYesNo + vbQuestion, "Kleine Frage")
If HH = vbYes Then
Dim AB As String
AB = MsgBox("OK, Chait, der Autor ist: " & AA, vbInformation, "Auf Wiedersehen")
Else
Dim AX As String
AX = MsgBox("Zurück zum Programm", vbExclamation, "Zurück")
End If
End Sub