Hallo Community!
Ich habe mir eine UserForm mit mehreren Textboxen gebastelt. In eine Textbox wird der spätere Dateiname für eine Datei eingeben. Aus diesem Grund darf/soll in das Feld keine Daten eingeben, die folgende Zeichen enthält „\ / : * ? " |“, damit das Speichern später funktioniert. Wenn man eines der Zeichen eingibt, sollte ein Hinweis kommen und das Speichern der Daten verhindern.
Ich habe an etwas ähnliches wie das hier gedacht, aber es funktioniert leider nicht ansatzweise:
________________________________________________
Public Sub Test()
Dim Name As String
Select Case Name
Case Is > InStr(Name, „/“)
MsgBox „Textinhalt ungültig“
End Select
End Sub
________________________________________________
Hoffentlich könnt ihr mir weiterhelfen. Vielen Dank im Voraus!
Hallo,
Ich habe mir eine UserForm mit mehreren Textboxen gebastelt.
In eine Textbox wird der spätere Dateiname für eine Datei
eingeben. Aus diesem Grund darf/soll in das Feld keine Daten
eingeben, die folgende Zeichen enthält „\ / : * ? "
|“, damit das Speichern später funktioniert. Wenn man eines
der Zeichen eingibt, sollte ein Hinweis kommen und das
Speichern der Daten verhindern.
Ich habe an etwas ähnliches wie das hier gedacht, aber es
funktioniert leider nicht ansatzweise:
________________________________________________
Public Sub Test()
Dim Name As String
Name ist ein Schlüsselwort, das darfst Du nicht als Variable verwenden.
Select Case Name
Select case brauchst Du hier nicht.
Case Is > InStr(Name, „/“)
MsgBox „Textinhalt ungültig“
End Select
End Sub
Public Sub Test(nm as String)
If Instr(nm,"") then
MsgBox „Textinhalt ungültig“
End If
End Sub
Das wird gehen.
Gruß, Rainer
Hallo Lars,
Du kannst Deine Datenprüfung entwender ans Ende Deiner Eingaben machen:
also ins Ereignis „textbox.lostfocus“
dort ist INSTR richtig …
Wenn vorhanden dann bspw. Textbox leeren oder „Böse Zeichen“ mit erlaubten ersetzen …
Oder Du machst Sie ins Ereignis textbox „textbox.keypress“,
bei diesem kannst Du auf Benutzereingaben direkt reagieren (am Besten die F1-Hilfe dazu lesen).
Am besten machst Du Beides, damit kannst Du Anwendertricks wie Copy&:stuck_out_tongue_winking_eye:aste verhindern.
Oder zum Zeitpunkt „Daten sichern“. Hier wiederum mit dem Befehl INSTR. Dann das Speichern nicht zulassen.
Ich hätte mal einen Code-Schnipsel bzw. eine Funktion mit der das gehen könnte (einfach in die Variable
strBoeseZeichen
die verbotenen Zeichen reinpacken und
MyTextBox
durch den Namen deiner eigenen Textbox ersetzen):
Public Sub MyTextBox\_OnKeyPress()
If ContainsInvalidSigns(MyTextBox.Text) Then
MsgBox "Die Textbox enthält ungültige Zeichen!" ...
End If
End Sub
Public Function ContainsInvalidSigns(ByVal ZuUeberpruefen As String) As Boolean
Dim iZeichen As Integer, strZeichen As String, strBoeseZeichen As String
strBoeseZeichen = "!|\/""\*"
For iZeichen = 1 To Len(ZuUeberpruefen)
strZeichen = Mid(ZuUeberpruefen, iZeichen, 1)
If Instr(strBoeseZeichen, strZeichen) Then
ContainsInvalidSigns = True
Exit Function
End If
Next iZeichen
ContainsInvalidSigns = False
End Function
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]