Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Готовые решения

МЕНЮ САЙТА
  • 1
  • 2
  • 3

КАТЕГОРИИ РАЗДЕЛА

ОПРОСЫ
Какой версией Excel Вы пользуетесь?
Всего ответов: 35759
Главная » Готовые решения » VBA » Полезные приёмы

Ввод номера телефона по маске
30.07.2014, 11:02
[ Файл-пример (24.1Kb) ]

маска вот такая: 8(###) ###-##-##

Option Explicit
Public WithEvents tbGroup As MSForms.TextBox 'используем коллекцию в качестве класса
Dim bu As Boolean, s$ 'mask 8(###) ###-##-##

Private Sub tbGroup_Change()
If bu = True Then bu = False: Exit Sub
'MsgBox tbGroup.Name
s = tbGroup.Text
Select Case Len(s)
 Case 0, 1
 s = "8("
 Case 3, 4, 5
 If Not IsNumeric(Right(s, 1)) Then s = Left(s, Len(s) - 1) Else Exit Sub
 Case 6
 If Not IsNumeric(Right(s, 1)) Then
 s = Left(s, Len(s) - 1)
 Else
 s = Left(s, Len(s) - 1) & ") " & Right(s, 1)
 End If
 Case 8, 9, 10, 12, 13, 15, 16
 If Not IsNumeric(Right(s, 1)) Then s = Left(s, Len(s) - 1) Else Exit Sub
 Case 11, 14
 If Not IsNumeric(Right(s, 1)) Then
 s = Left(s, Len(s) - 1)
 Else
 s = Left(s, Len(s) - 1) & "-" & Right(s, 1)
 End If
 Case Is > 16: s = Left(s, Len(s) - 1)
End Select
bu = True: tbGroup.Value = s
End Sub
Добавил: nilem |
Просмотров: 3091 | Рейтинг: 5.0/1
Всего комментариев: 4
+2   Спам
1    esvolk   (04.09.2014 14:56)
   Не совсем ясно зачем такие сложности, просто вносим номер из 10 цифр (можно запретить пробелы и другие знаки и ограничить 10-ю цифрами), потом применяем допформат +7(###)###-##-## и всё.

0   Спам
2    VictorM   (16.08.2015 16:59)
   Никаких сложностей, все отлично работает.
НО, вот только вопрос - при удалении введенного номера backspace остаются (не удаляются) первые 2 символа 8(.
При удалении "выделить+del" та же картина.
Можно ли это как-то устранить?

+1   Спам
3    nilem   (16.08.2015 22:19)
   попробуйте разбить Case 0, 1 на два случая:
Case 0: Exit Sub
Case 1
s = "8("

0   Спам
4    VictorM   (16.08.2015 22:27)
   nilem все сработало!
Спасибо.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!