Wie kann eine Fehlerüberprüfung für ein Textfeld aussehen für das nur
Buchstabe von a bis z, also keine Ziffern oder Sonderzeichen etc. zugelassen
werden soll?
Vielen Dank für Eure Hilfe
Helge Borchert
Function NurAbisZ(Text As String) As Boolean
Dim m, n As Long
n = Len(Text): m = 0
For i = 1 To n
t$ = Mid(Text, i, 1): If t$ >= "a" And t$ <= "z" Then m = m + 1
Next
If m = n Then NurAbisZ = True Else NurAbisZ = False
End Function
Gruß Alexander
"Helge Borchert" <NOSPAM_b...@web.de> schrieb im Newsbeitrag
news:2uujjsF...@uni-berlin.de...
"Helge Borchert" <NOSPAM_b...@web.de> schrieb im Newsbeitrag
news:2uujjsF...@uni-berlin.de...
> Hi,
>
> Wie kann eine Fehlerüberprüfung für ein Textfeld aussehen für das nur
> Buchstabe von a bis z, also keine Ziffern oder Sonderzeichen etc.
zugelassen
> werden soll?
>
Ich mach das wie folgt: Einfach im Change-Event der Textbox folgendes
eintragen
Private Sub TextBox1_Change()
Dim textstr1 As String, textstr2 As String
textstr1 = Me.TextBox1.Value
textstr2 = ""
For I = 1 To Len(textstr1)
If InStr("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
Mid(textstr1, I, 1)) Then
textstr2 = textstr2 & Mid(textstr1, I, 1)
End If
Next I
Me.TextBox1.Value = textstr2
End Sub
Das ist vielleicht nicht die schnellste Variante, ist jedoch sehr flexibel
was die Auswahl der erlaubten Zeichen angeht (der erste String in der
InStr-Anweisung enthält alle Zeichen, die erlaubt sind, alle anderen werden
herausgefiltert ... Du kannst hier auch noch Ziffern, Umläute oder bestimmte
Sonderzeichen eintragen). Wenn Du das Ganze öfter brauchst solltest Du den
Code natürlich in eine extra Funktion packen (mit 'textstr1' als Argument
und 'textstr2' als Rückgabewert).
Gruss
Christian
Helge Borchert schrieb:
> Wie kann eine Fehlerüberprüfung für ein Textfeld aussehen für das nur
> Buchstabe von a bis z, also keine Ziffern oder Sonderzeichen etc. zugelassen
> werden soll?
hier noch ein Vorschlag:
Private Sub TextBox1_Change()
Dim strText As String
With TextBox1
If .Text = "" Then Exit Sub
strText = Asc(UCase(VBA.Right(.Text, 1)))
If strText < 58 Or strText > 90 Then
.Text = VBA.Left(.Text, Len(.Text) - 1)
End If
End With
End Sub
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Helge
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not Chr(KeyAscii) Like "[a-z,A-Z]" Then KeyAscii = 0
End Sub
MfG Frank
_____________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
Website: http://www.xl-faq.de; Auftragsprogrammierung