Zablokowanie możliwości wprowadzenie więcej niż jednego określonego znaku to TextBoxa
Poniższy kod uniemożliwia wprowadzenie po raz drugi i kolejny określonego
znaku (zmienna 'znak') do TextBoxa:
Private Sub TextBox1_Change()
znak = "a" ''znak' ktory moze byc wprowadzony tylko 1 raz
licz = 0
For i = 1 To Len(TextBox1)
'sprawdza ile razy wystepuje 'znak'
If Mid(TextBox1, i, 1) = znak Then
licz = licz + 1
End If
Next i
'jezeli znak wystepuje juz 1 raz i wprowadzony znak to 'znak' - usuwa go
If licz > 1 And Right(TextBox1, 1) = znak Then
TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
End If
End Sub
Otrzymałem także, pocztą elektroniczną zaproponowane przez czytelnika prostsze i czytelniejsze rozwiązanie:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Chr(KeyAscii) = "a" Then
If InStr(1, TextBox1.Text, "a") > 0 Then
KeyAscii = 0
End If
End If
End Sub
A także kod umożliwiający wprowadzenie każdego ze znaków tylko jeden raz:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr(1, TextBox1.Text, Chr(KeyAscii)) > 0 Then
KeyAscii = 0
End If
End Sub