.PasswordChar
свойство маскирует текстовое поле ввода тем символом, который пользователь выбирает правильно в Excel для Windows, но не в Excel для Mac.
Я работал с Textbox1_Change
событиями, но он не работает эффективно.
Может кто-нибудь намекнуть мне, что мне делать?
Private Sub TextBox1_Change()
Dim mystring As Variant
Dim textlen As Integer
Dim counter As Integer
mystring = UserForm1.TextBox1.Value
textlen = VBA.Len(mystring)
If VBA.Right(mystring, 1) = "*" Then
Exit Sub
ElseIf VBA.Right(mystring, 1) <> "*" Then
End If
If shes = vbNullString Then
Else
shes = Sheets("Sheet1").Range("A1").Value
End If
For counter = 1 To textlen
If textlen > 0 Then
If VBA.Mid(mystring, counter, 1) = "*" Then
Else
Sheets("Sheet1").Range("A1").Value = Sheets("Sheet1").Range("A1").Value & VBA.Mid(mystring, counter, 1)
End If
End If
Next
If textlen > 0 Then
UserForm1.TextBox1.Value = VBA.Replace(mystring, VBA.Mid(mystring, textlen, 1), "*")
End If
End Sub
Вот код, который работал для меня в Windows и MAC Excel оба.
но ограничение состоит в том, что код не позволяет пользователю редактировать значение текстового поля во время записи.так что это как-то становится более безопасным.вот код
Private Sub TextBox1_Change()
Dim mystring As Variant
Dim textlen As Integer
Dim counter As Integer
Dim passlen As Integer
mystring = UserForm1.TextBox1.Value
textlen = VBA.Len(mystring)
passlen = VBA.Len(Sheets("Sheet1").Range("A1").Value)
If VBA.Right(mystring, 1) = "*" Then
If passlen <> textlen Then
MsgBox "You're not allowed to do so"
UserForm1.TextBox1.Value = ""
Sheets("Sheet1").Range("A1").Value = ""
Exit Sub
End If
Exit Sub
End If
For counter = 1 To textlen
If textlen > 0 Then
If VBA.Mid(mystring, counter, 1) = "*" Then
Else
Sheets("Sheet1").Range("A1").Value = Sheets("Sheet1").Range("A1").Value & VBA.Mid(mystring, counter, 1)
End If
End If
Next
If textlen > 0 Then
UserForm1.TextBox1.Value = VBA.Replace(mystring, VBA.Mid(mystring, textlen, 1), "*")
End If
End Sub