Страницы: 1
RSS
Формат текста в TextBox
 
Здравствуйте. Помогите, как изменить код с формата ###-###-##-## на +7 (###) ###-##-## или +7 ### ###-##-##?
 
Код

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Not IsNumeric(Chr$(KeyAscii)) Then
        KeyAscii = 0
    Else
        t = Me.TextBox1
        If t Like "+7 (###" Then
            t = t & ") "
        ElseIf t Like "+7 (###) ###" Or _
           t Like "+7 (###) ###-##" Then t = t & "-"
        End If
        Me.TextBox1 = t
    End If
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    On Local Error Resume Next
    t = Me.TextBox1
    If KeyCode <> 10 And KeyCode <> Asc(vbTab) And Len(t) >= 18 Then KeyCode = 0
    Me.TextBox1 = t
End Sub

Private Sub UserForm_Click()

End Sub

Private Sub UserForm_Initialize()
Me.TextBox1 = "+7 ("
End Sub
По вопросам из тем форума, личку не читаю.
 
БМВ, Спасибо ОГРОМНОЕ, но Ёжики - Колючие, при очистке TextBox - не робит :cry:
Изменено: Бобровский - 08.01.2020 22:33:47
 
Единственное событие, которое подходит к данной хотелке, это Exit. Все остальное требует кучу не оправданных затрат.
Код
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Len(TextBox1) = 10 Then
        If IsNumeric(TextBox1) Then
            TextBox1.Text = Format(TextBox1.Text, "+7(000) 000 00 00")
        End If
    End If
End Sub
 
RAN, Андрей, но ведь некрасиво набирается :-) . А было красиво :-)
По вопросам из тем форума, личку не читаю.
 
Первый вариант отличный, СПАСИБО, второй - ... не мой, нет защиты от "дурака", извините, Не заставишь считать кол-во символов(((
 
Цитата
Бобровский написал:
Не заставишь считать кол-во символов(((
Мой вариант как раз заставит. Ибо, если ввести кривой номер (не 10 символов), то и нужный формат не получить.
 
Готовый вариант, может кому сгодится. Спасибо за помощь.
Страницы: 1
Наверх