folgendes Beispiel aus der MSDN:
Validate-Ereignis, CausesValidation-Eigenschaft (Beispiel)
Im Beispiel werden drei Steuerelemente verwendet, um die Verwendung des Validate-Ereignisses und der CausesValidation-Eigenschaft zu zeigen. Standardmäßig ist die CausesValidation-Eigenschaft der beiden Textfeld-Steuerelemente (TextBox) auf True gesetzt. Wenn Sie daher versuchen, den Fokus vom einen auf das andere Textfeld zu übertragen, tritt das Validate-Ereignis auf. Falls Text1 kein Datum enthält oder Text2 keine Zahl größer 10 enthält, wird das Verschieben des Fokus verhindert. Da die CausesValidation-Eigenschaft des Steuerelements Command1 auf False gesetzt ist, können Sie jedoch jederzeit auf die Hilfeschaltfläche klicken.
Um das Beispiel auszuprobieren, plazieren Sie ein Befehlsschaltfläche-Steuerelement (CommandButton) und zwei Textfeld--Steuerelemente in einem Formular. Fügen Sie den Code in den Deklarationsabschnitt des Formulars ein, und führen Sie das Projekt aus. Versuchen Sie, den Fokus durch drücken der TABULATORTASTE zu verschieben.
Private Sub Form_Load()
' CausesValidation-Eigenschaft der Schaltfläche auf False setzen. Beim
' Klicken auf die Schaltfläche tritt das Validate-Ereignis nicht auf.
' Caption-Eigenschaft der Schaltfläche auf "Hilfe" setzen.
With Command1
.CausesValidation = False
.Caption = "Hilfe"
End With
Show
With Text1 ' Text in Text1 auswählen und Fokus darauf setzen.
.SelLength = Len(Text1.Text)
.SetFocus
End With
End Sub
Private Sub Command1_Click()
' Hilfe bereitstellen, wenn auf die Schaltfläche geklickt wird.
MsgBox _
"Text1 muß ein Datum enthalten." & VbCrLF & _
"Text2 muß eine Zahl kleiner 10 enthalten."
End Sub
Private Sub Text1_Validate(KeepFocus As Boolean)
' Falls Wert kein Datum ist, Fokus behalten, es sei denn, es wird
' auf die Hilfeschaltfläche geklickt.
If Not IsDate(Text1.Text) Then
KeepFocus = True
MsgBox "Bitte geben Sie ein Datum in diesem Feld ein.", , "Text1"
End if
End Sub
Private Sub Text2_Validate(KeepFocus As Boolean)
' Falls Wert eine Zahl größer 10 ist, Fokus behalten.
If Not IsNumeric(Text2.Text) Or Val(Text2.Text) > 10 Then
KeepFocus = True
MsgBox _
"Bitte geben Sie eine Zahl kleiner oder gleich 10 ein.", , "Text2"
End If
End Sub