Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2011, 22:51   #11
mihha2
 
Регистрация: 20.10.2011
Сообщений: 9
По умолчанию

по вопросу 1 может чтото в TabIndex элемента кнопок указать чтоб их игнорировать при переборе клавишей Enter?

Последний раз редактировалось mihha2; 21.10.2011 в 23:16.
mihha2 вне форума Ответить с цитированием
Старый 22.10.2011, 14:13   #12
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Цитата:
Сообщение от mihha2 Посмотреть сообщение
по вопросу 1 может чтото в TabIndex элемента кнопок указать чтоб их игнорировать при переборе клавишей Enter?
Можно свойство TabStop для кнопок установить False в окне свойств, чтобы фокус на них не переходил.
А с удалением может так как-то:
Код:
Private Sub CommandButton3_Click()
Dim i&, s$
For i = 5 To 1 Step -1
    s = Me.Controls("TextBox" & i).Text
    If Len(s) Then
        s = Mid(s, 1, Len(s) - 1)
        Me.Controls("TextBox" & i).Text = s
        Exit For
    End If
Next
End Sub

Последний раз редактировалось nilem; 22.10.2011 в 17:52. Причина: s = Me.Controls("TextBox" & i).SelStart - это случайно втесалось
nilem вне форума Ответить с цитированием
Старый 22.10.2011, 16:05   #13
mihha2
 
Регистрация: 20.10.2011
Сообщений: 9
По умолчанию

c TabStop спасибо за совет - все гениальное просто - работает !

код по копке С работает - правда стирает не с положения курсора а начиная с TextBox5

главная проблема в другом обнаружилась - для местных телефонов в формате ###-##-## и сотовых в формате #-(###)-###-##-## все будет работать нормально (для местных другую форму сделаю с 3-мя текстбоксами) - здесь формат един для всех телефонов

а вот с межгородом не знаю как - дело в том что там единого формата нет
может быть такой #-(####)-##-##-## может быть такой #-(#####)-##-## и тд
вся проблема только в "плавающем" коде в скобках (от 3 до 5 символов мб) который заносится в TextBox2
те сейчас формат типа #-(###)-###-##-## 8-(777)-777-77-77 работает без проблем - заносится в ячейку таблицы и вынимается формой правильно

а вот если занести в ячейку формой формат например типа #-(#####)-#-##-## 8-(77777)-7-77-77 (бывает и такой) или такой 8-(7777)-77-77 ) то занесется в ячейку правильно а вот когда формой вынимаешь из ячейки - неправильно вынимает

в связи с этим вопрос - можно ли както поправить макрос на вынимание кода из ячейки при старте формы - чтоб не распределял а просто вставлял все что в скобках в ячейке (....) в TextBox2 - а 8 в TextBox1?

файлик поправленный с учетом доработок прилагаю
Вложения
Тип файла: rar ТелКнига4 дораб.rar (24.2 Кб, 9 просмотров)

Последний раз редактировалось mihha2; 22.10.2011 в 16:23.
mihha2 вне форума Ответить с цитированием
Старый 22.10.2011, 17:48   #14
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Цитата:
Сообщение от mihha2 Посмотреть сообщение
... а просто вставлял все что в скобках в ячейке (....) в TextBox2 - а 8 в TextBox1?...
Вариант. Меняем это:
Код:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("D2:D100")) Is Nothing Then
    Cancel = True
    str = Target.Value
    UserForm1.Show 0
End If
End Sub
и это:
Код:
Private Sub UserForm_Initialize()
Dim b&, l&
b = InStr(str, "(") + 1
l = InStr(str, ")") - b
Me.TextBox1.Text = "8"
Me.TextBox2.Text = Mid(str, b, l)
Me.TextBox3.SetFocus
End Sub
А что делать, если скобок в ячейке не окажется?
nilem вне форума Ответить с цитированием
Старый 22.10.2011, 18:38   #15
mihha2
 
Регистрация: 20.10.2011
Сообщений: 9
По умолчанию

Ввод кода в скобках и вывод совпадает и 8 в первый текстбокс вставляется-то что надо получилось !

осталось только как остальные цифры после скобок при вводе из ячейки в форму в форме раскидать в TextBox3 TextBox4 TextBox5 по формату ###-##-## ( если номер после скобок будет не 7 знаков а меньше например 5 зн то будет заполнен TextBox3 и TextBox4 TextBox5 будет пустой - это некритично)

по поводу отсутствия скобок были правы - при вводе из пустой ячейки дает ошибку-может условие поставить - если ячейка пустая то запускается форма с пустыми 2-5TextBox-ми и 8 в TextBox1
- если заполнена со скобками - то обычный вариант с заполнением ?

Чтобы вариант отсутствия скобок предусмотреть можно вызов формы через

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("D2:D100")) Is Nothing Then
str = Target.Value
UserForm1.Show 0
End If
End Sub

чтоб в ячейку вводить изменения только через форму
Вложения
Тип файла: rar ТелКнига5 дораб.rar (17.9 Кб, 12 просмотров)

Последний раз редактировалось mihha2; 22.10.2011 в 21:07.
mihha2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск значения ячейки двар Microsoft Office Excel 2 04.04.2011 12:12
Активирование значения ячейки, на основе другой ячейки Mark.ru Microsoft Office Excel 5 13.12.2010 16:23
Передача значения ячейки Domain Microsoft Office Excel 1 04.10.2010 12:22
Передача значения в форму другой книги. Kveldulv Microsoft Office Excel 3 02.04.2010 07:17
Окраска ячейки в зависимости от значения Апчхи Microsoft Office Excel 6 16.08.2009 19:31