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