Discussion:
in Textfeld nur Buchstaben zulassen
(zu alt für eine Antwort)
Helge Borchert
2004-11-04 11:54:39 UTC
Permalink
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?

Vielen Dank für Eure Hilfe

Helge Borchert
Alexander Wolff
2004-11-04 12:26:47 UTC
Permalink
Sub test()
MsgBox NurAbisZ("adjhfaljd")
End Sub

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
Post by Helge Borchert
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?
Vielen Dank für Eure Hilfe
Helge Borchert
wobrose58
2004-11-04 12:29:05 UTC
Permalink
Hallo Helge,
dies funktioniert mit einer "Gültigkeit": Für die Zelle, in die lediglich
Zahlen eingegeben werden dürfen ist eine solche Regel aufzustellen, indem man
unter <Daten> folgende <Gültigkeit> zulässt: <Ganze Zahl> falls es sich um
ganze Zahlen handeln soll, oder <Dezimal>, falls es sich auch um Kommabeträge
handeln darf. Darunter kann man sogar noch den kleinsten und / oder den
größten Wert angeben, muss man jedoch nicht.
Ich hoffe, ich konnte Dir helfen.
Gruß
Wolfgang Brosé
Post by Helge Borchert
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?
Vielen Dank für Eure Hilfe
Helge Borchert
Christian Wisspeintner
2004-11-04 12:36:23 UTC
Permalink
Hallo Helge,
Post by Helge Borchert
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
Melanie Breden
2004-11-04 12:42:15 UTC
Permalink
Hallo Helge,
Post by Helge Borchert
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 Borchert
2004-11-04 12:50:47 UTC
Permalink
hat super gefunzt. Habe jetzt EIN Problem weniger :-))

Helge
unknown
2004-11-04 14:15:09 UTC
Permalink
Hallo Helge,
wenn es sich um eine Textbox auf einer Userform handelt, dann hab ich
auch noch einen Vorschlag:

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

Loading...