VB6: String einer Textbox untersuchen

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&amp: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]