В текстовом поле TextBox необходимо использовать маску для ввода, чтобы уменьшить вероятность ошибки ввода данных. Вводимые значения могут быть как вида ####-## (например 1234-56), так и #####-## (например 12345-67). Вводятся только цифры. Возможно ли это реализовать?
Artem1977 написал: Но возможно ввести только четырёхзначное число перед дефисом. А оно может быть и пятизначным
а как вы представляете себе логику, по которой компьютер должен понять "оно у вас будет 5значное или 4значное"?.. p.s. логика кода - считает количество символов после очередного нажатия на клавиатуру. как ему вас понять - после 4-го символа будет 5-й или нет?..
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Следствие из третьего закона Чизхолма: "Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Это даже лучше чем я мог предположить! Огромное спасибо!!!
Ну а логика... Повторюсь. Пользователь вводит только цифры. Если он ввёл 123456, то оно должно приобрести вид 1234-56. Если пользователь продолжил ввод и добавил цифру 7, т.е. ввёл 1234567 то должно приобрести вид 12345-67.
ВариантPerfect2You меня более чем устраивает. Спасибо!!!
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Private Sub TextBox1_Change()
Dim s&
If Len(TextBox1.Text) Then
s = CLng(Replace(TextBox1.Text, "-", ""))
If Len(CStr(s)) > 2 Then
TextBox1.Text = Format(s, "0-00")
Else
TextBox1.Text = s
End If
End If
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Select Case Len(TextBox1.Text)
Case 1 To 6
MsgBox "Маловато будет!", vbExclamation
Case Is > 8
MsgBox "Куда разогнался! TextBox треснет!", vbExclamation
Case Else
Exit Sub
End Select
With TextBox1
.SelStart = 0: .SelLength = Len(.Text)
End With
Cancel = True
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub
Следствие из третьего закона Чизхолма: "Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."