|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
07.11.2008, 16:42 | #1 |
Регистрация: 07.11.2008
Сообщений: 9
|
Пользовательский формат VBA Excel
Может кто-то уже сталкивался с подобной проблемой.
Хочу чтоб при вводе телефонного номера в поле на форме, номер вводился по маске, например, ввожу 325689, и в этом поле введенные цифры группировались как 32-23-56. Искала информацию по этому поводу, но ничего путного не нашла. Поле для ввода тел. номера у меня на форме Text.box. Читала что маску можно организовать с помощью спец. объекта VBA в Excel - объект Masked Edit Control, только вот у себя в новом 2007 офисе его не могу найти, просмотрела весь список. Может это можно сделать и с простым полем? Очень хочеться сделать маску, вот только как ? Люди, помоги советом, буду признательна. |
07.11.2008, 17:02 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Вот один из способов (не лучший из возможных, но вдруг подойдёт):
Предполагается, что на форме присутствует текстбокс с именем TextBox1 Код:
cell.Value = Format(PhoneNumber, "##-##-##") |
07.11.2008, 17:23 | #3 |
Регистрация: 07.11.2008
Сообщений: 9
|
Спасибо, вы мне очень помогли, первый код, что вы привели, подошел идеально, работает. А вот второй не работает.
и еще вопрос, может он покажется глупым ( я пока чайник), почему именно событие TextBox1_Change(), а не например, KeyPress? Еще один вопрос: при работе первого кода, как я уже говорила работает все хорошо, только вот, если в поле я захочу удалить номер и набрать другой, то удаляется только 2 последние цифры? Почему так? |
07.11.2008, 17:38 | #4 | |||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Код:
Цитата:
Вообще, в этом коде ещё многое необходимо учесть - например, что б можно было вводить только цифры, и т.д. Это был всего лишь пример. Цитата:
У меня сколько надо, столько и удаляется. (проверял много раз - но у меня Excel 2003 rus) |
|||
07.11.2008, 18:10 | #5 |
Регистрация: 07.11.2008
Сообщений: 9
|
спасибо за второй повторный присланный код, вот только в моем случае он скорее не подойдет, т.к. в моей программе данные сначала заносятся в форму, а из нее уже на лист.
Другой вопрос, тот код что первый, я его у себя реализовала. Для ввода 6-значного номера все хорошо. А как сделать маску тогда для 11-го номера. Ведь в поле может вводится номер не только 6-ный, но и номер моб. тел. Я вот пыталась что-то поправить в вышем коде, только вот не все корректно работает. Мне бы хотелось что было предусмотрено ввод цифр по маске для 6 цифр, 11 цифр и одномременно два номер с маской. Прикрепляю файл, если вас не затруднит можете там увидеть ваш код, может что подскажите и на этот счет? |
07.11.2008, 18:21 | #6 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Цитата:
Мало ли что пользователю вздумается ввести... на все случаи жизни масок не предусмотришь Я бы оставил просто текстовое поле, а потом уже, при желании, можно разбить введённую строку на отдельные телефонные номера. Да и элемент управления Masked Edit Control в Вашем случае мало чем поможет - конечно, можно попробовать переключать различные маски в зависимости от содержимого поля, но это будет ненамного проще, чем в случае с Textbox-ом.
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 07.11.2008 в 18:25. |
||
07.11.2008, 19:09 | #7 |
Регистрация: 07.11.2008
Сообщений: 9
|
спасибо и за этот совет, нашла то что советовали, установила. Вот только почему-то объект не хочет добавляться на форму? Выдается ошибка, см. файл прикр. Почему?
|
07.11.2008, 19:25 | #8 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Для этого нажмите Пуск - Выполнить, введите строку regsvr32 MSMASK32.OCX и нажмите ОК. (файл должен находиться в папке C:\WINDOWS\system32\, иначе потребуется ввести полный путь к файлу, например, regsvr32 "C:\Documents and Settings\Администратор\Рабочий стол\MSMASK32.OCX") |
|
07.11.2008, 19:34 | #9 |
Регистрация: 07.11.2008
Сообщений: 9
|
спасибо и за этот совет, все сделала как описано, выдалось сообщение что регистрация удачно завершена, вот только ситуация почему-то не поменялась, опять выдается эта же ошибка. Может для этого еще нужно пк перезакрузить?
|
07.11.2008, 19:39 | #10 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Забыл, что одного файла недостаточно...
Извлеките из прикреплённого к сообщению архива файлы, и скопируйте их в папку C:\WINDOWS\system32\ После этого повторите процедуру регистрации. Перезагружать компьютер не требуется. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
VBA Excel | Slicker | Помощь студентам | 4 | 04.11.2008 17:14 |
пользовательский формат или объединение содержимого | mr.beginner | Microsoft Office Excel | 3 | 08.07.2008 16:39 |
VBA Excel ComboBox | corsarlt | Microsoft Office Excel | 2 | 05.06.2008 23:50 |
Задать формат, числу в VBA | valerij | Microsoft Office Excel | 3 | 04.06.2008 10:58 |
VBA i Excel | corsarlt | Microsoft Office Excel | 3 | 03.04.2008 06:13 |