Страницы: 1
RSS
Несколько вопросов по UserForm
 
Приветствую!  
Лет 7 назад написал в Аксесс программулину для расчета.  
Сейчас потребовалось обойтись без Аксесс.  
Пытаюсь переложить на Эксель.  
После продолжительных танцев с бубнами и углубленного изучения форума почти все вопросы решены.  
Остались непонятки, без решения которых можно и обойтись, но хочется разобраться.  
 
1.Данная конструкция  
   With Me.vzrBox  
       .SelStart = 0  
       .SelLength = Len(Me.vzrBox.Text)  
   End With  
работает в процедурах Exit и MouseUp.  
При использовании в процедуре Change она просто игнорируется, а из процедуры AfterUpdate выделяется текст не в этом поле, а в самом первом.  
 
2.Строка Расчет.SetFocus - отправляет фокус куда угодно, только не на кнопку Расчет.
 
без возможности протестировать код на вашем файле, сложно дать точные ответы, но попробую...  
 
1) При использовании в процедуре Change она просто игнорируется, а из процедуры AfterUpdate выделяется текст не в этом поле, а в самом первом  
 
Вы уверены, что событие Change относится к полю vzrBox?  
Если да, то ничего там не игнорируется - видимо, вы там что-то в коде перемудрили  
Проверьте сами:  
 
Private Sub vzrBox_Change()  
   With Me.vzrBox  
       .SelStart = 0  
       .SelLength = Len(Me.vzrBox.Text)  
   End With  
End Sub  
 
 
Могу ещё предложить такой вариант:  
 
   With Me.vzrBox  
       .SetFocus ' может, этого не хватает...  
       .SelStart = 0  
       .SelLength = Len(Me.vzrBox.Text)  
   End With  
 
 
2) Строка Расчет.SetFocus - отправляет фокус куда угодно, только не на кнопку Расчет.  
 
И опять, скорее всего, вы где-то переборщили с событиями формы - возможно, после Расчет.SetFocus срабатывают ещё несколько ДругойОбъект.SetFocus    
 
 
Вот вам пример в виде файла, где всё работает: http://excelvba.ru/XL_Files/Sample__08-03-2011__8-36-04.zip
 
Пример файла из предыдущего сообщения не работает..  
Вот тот самый пример, только работающий: http://excelvba.ru/XL_Files/Sample__08-03-2011__8-37-19.zip  
 
PS: Вывод - для устранения проблем упростите код, уменьшив количество обрабатываемых событий формы.
 
Поковырял пример.  
Теперь не работает.
 
Проверил - работает.
 
У меня после ввода значения в верхнее поле  текст в поле vzrBox не выделяется, хотя должен бы.  
После ввода значения в нижнее поле фокус переходит не на кнопку расчет, как должен по строке Расчет.SetFocus , а на CommandButton1.  
При этом по точкам останова все процедуры проходят правильно.
 
Так это, смотря где и что отслеживать:  
- ввели текст в верхнее поле, активируем нижнее, или радиокнопку - текст выделяется.  
- ввели текст в нижнее поле, активируем верхнее, или радиокнопку - фокус на кнопке Расчет.  
Т.е. все события работают.
 
Отслеживаем TextBox1_Exit  
Если оттуда убрать проверку, то при вводе значения событие vzrBox_Change отрабатывает правильно, т.е. строка в vzrBox выделяется.  
Отслеживаем TextBox2_AfterUpdate.  
Если TabIndex поля TextBox2 и кнопок CommandButton1 и Расчет упорядочены последовательно то переход тоже осуществляется правильно. Зависимость пока правильно не определил.
Страницы: 1
Читают тему
Наверх