Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

Thema

Eigene Klasse für UserForm-TextBoxes bilden

Gruppe

TextBox

Problem

Bei einer UserForm mit 4 TextBoxes soll bei der Eingabe des 8. Zeichens geprüft werden, ob es sich um ein gültiges Datum handelt. Alle TextBoxes sind gemeinsam über ein Change-Ereignis anzusprechen.

Lösung
Geben Sie den nachfolgenden Code in das Klassenmodul der UserForm ein.

ClassModule: Tabelle1

Private Sub cmdDialogAufruf_Click()
   frmSampleClass.Show
End Sub

ClassModule: frmSampleClass

Dim txtBoxes(1 To 4) As New Klasse1

Private Sub cmdCancel_Click()
   Unload Me
End Sub

Private Sub UserForm_Initialize()
   Dim intCounter As Integer
   For intCounter = 1 To 4
      Set txtBoxes(intCounter).TxtGroup = Controls("TextBox" & intCounter)
   Next intCounter
End Sub

ClassModule: Klasse1

Public WithEvents TxtGroup As MSForms.TextBox

Private Sub TxtGroup_Change()
   With TxtGroup
      If Len(.Text) < 8 Then Exit Sub
      If Not IsDate(.Text) Then
         Beep
         MsgBox "Bitte gültiges Datum eingeben!"
         .SelStart = 0
         .SelLength = .TextLength
      End If
   End With
End Sub

StandardModule: basMain

Sub CallForm()
   frmSampleClass.Show
End Sub