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

Вход

Регистрация

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

 

= Мир MS Excel/Поместить курсор в нужном месте формы после ввода данных - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поместить курсор в нужном месте формы после ввода данных
Поместить курсор в нужном месте формы после ввода данных
bratsk_vi Дата: Воскресенье, 12.05.2013, 14:08 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте, господа. С благодарностью приму подсказку.

В программировании я новичок, поэтому вопрос простой.
Имеется UserForm (в прикрепленном файле это Ввод_команд), в которой два ComboBox-а и пара кнопок. Данные вводятся во второй ComboBox (первый заполняется автоматом). Требуется, чтобы после нажатия Enter (у данного ComboBox-а свойства AfterUpdate()) курсор для ввода данных снова появился в этом же ComboBox-е. Свойство TabIndex=0 не помогает.
Поиск по форуму ничего не дал (по крайней мере, мне)
Версия Excel2003

P.S. Файл еще сырой, поэтому на остальные извращения внимания обращать не стоит.
К сообщению приложен файл: Protokol.xls (89.5 Kb)


Сообщение отредактировал bratsk_vi - Воскресенье, 12.05.2013, 14:18
 
Ответить
СообщениеЗдравствуйте, господа. С благодарностью приму подсказку.

В программировании я новичок, поэтому вопрос простой.
Имеется UserForm (в прикрепленном файле это Ввод_команд), в которой два ComboBox-а и пара кнопок. Данные вводятся во второй ComboBox (первый заполняется автоматом). Требуется, чтобы после нажатия Enter (у данного ComboBox-а свойства AfterUpdate()) курсор для ввода данных снова появился в этом же ComboBox-е. Свойство TabIndex=0 не помогает.
Поиск по форуму ничего не дал (по крайней мере, мне)
Версия Excel2003

P.S. Файл еще сырой, поэтому на остальные извращения внимания обращать не стоит.

Автор - bratsk_vi
Дата добавления - 12.05.2013 в 14:08
Саня Дата: Воскресенье, 12.05.2013, 14:49 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
Цитата (bratsk_vi)
курсор для ввода данных снова появился в этом же ComboBox-е

[vba]
Код
комбобокс.SetFocus
[/vba]
 
Ответить
Сообщение
Цитата (bratsk_vi)
курсор для ввода данных снова появился в этом же ComboBox-е

[vba]
Код
комбобокс.SetFocus
[/vba]

Автор - Саня
Дата добавления - 12.05.2013 в 14:49
bratsk_vi Дата: Воскресенье, 12.05.2013, 15:33 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Цитата (Саня)
комбобокс.SetFocus


Увы, не помогает... я уж в порядке эксперимента оставил только две строки:
[vba]
Код
Private Sub ComboBox2_AfterUpdate()
ComboBox2.SetFocus
[/vba]

Все равно, после ввода текста в ComboBox2 и нажатию Enter выбирается кнопка, а не ComboBox2...
Правда, если у этой кнопки сделать
[vba]
Код
Private Sub CommandButton1_Click()
ComboBox2.SetFocus
End Sub
[/vba]
и щелкнуть по этой кнопке, то курсор появляется там, где надо. Но все же быстрее через Enter - надо вводить много данных (кнопка - для тех, кто не догадается).


Сообщение отредактировал bratsk_vi - Воскресенье, 12.05.2013, 15:45
 
Ответить
Сообщение
Цитата (Саня)
комбобокс.SetFocus


Увы, не помогает... я уж в порядке эксперимента оставил только две строки:
[vba]
Код
Private Sub ComboBox2_AfterUpdate()
ComboBox2.SetFocus
[/vba]

Все равно, после ввода текста в ComboBox2 и нажатию Enter выбирается кнопка, а не ComboBox2...
Правда, если у этой кнопки сделать
[vba]
Код
Private Sub CommandButton1_Click()
ComboBox2.SetFocus
End Sub
[/vba]
и щелкнуть по этой кнопке, то курсор появляется там, где надо. Но все же быстрее через Enter - надо вводить много данных (кнопка - для тех, кто не догадается).

Автор - bratsk_vi
Дата добавления - 12.05.2013 в 15:33
Саня Дата: Воскресенье, 12.05.2013, 15:51 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
думаю, что логика построения обработчика _AfterUpdate не позволяет вернуть фокус.

Предлагаю некий обман

дописывай обработчик строкой снизу:
[vba]
Код
Private Sub ComboBox2_AfterUpdate()
'...
       Application.OnTime Now + TimeSerial(0, 0, 1), "zuruck"
End Sub
[/vba]

а в стандартный модуль:
[vba]
Код
Sub zuruck()
       Ввод_команд.ComboBox2.SetFocus
End Sub
[/vba]

все, без извращения, делаем так (+ свойство кнопки Default=True):
[vba]
Код
Private Sub CommandButton1_Click()
'End Sub
'
'Private Sub ComboBox2_AfterUpdate()

              Dim N As Byte
    '.......
               ComboBox2.Value = ""
               ComboBox2.SetFocus
End Sub
[/vba]
 
Ответить
Сообщениедумаю, что логика построения обработчика _AfterUpdate не позволяет вернуть фокус.

Предлагаю некий обман

дописывай обработчик строкой снизу:
[vba]
Код
Private Sub ComboBox2_AfterUpdate()
'...
       Application.OnTime Now + TimeSerial(0, 0, 1), "zuruck"
End Sub
[/vba]

а в стандартный модуль:
[vba]
Код
Sub zuruck()
       Ввод_команд.ComboBox2.SetFocus
End Sub
[/vba]

все, без извращения, делаем так (+ свойство кнопки Default=True):
[vba]
Код
Private Sub CommandButton1_Click()
'End Sub
'
'Private Sub ComboBox2_AfterUpdate()

              Dim N As Byte
    '.......
               ComboBox2.Value = ""
               ComboBox2.SetFocus
End Sub
[/vba]

Автор - Саня
Дата добавления - 12.05.2013 в 15:51
bratsk_vi Дата: Воскресенье, 12.05.2013, 16:38 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Цитата (Саня)
Предлагаю некий обман


Мое мерси! - обман удался. Потом разберу, что к чему.
 
Ответить
Сообщение
Цитата (Саня)
Предлагаю некий обман


Мое мерси! - обман удался. Потом разберу, что к чему.

Автор - bratsk_vi
Дата добавления - 12.05.2013 в 16:38
bratsk_vi Дата: Среда, 15.05.2013, 10:17 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Потыкался и нашел более простой путь. В окне кодов формы просто дописал:
[vba]
Код
Private Sub ComboBox2_Change()
ComboBox2.SetFocus
End Sub
[/vba]


Сообщение отредактировал bratsk_vi - Среда, 15.05.2013, 10:18
 
Ответить
СообщениеПотыкался и нашел более простой путь. В окне кодов формы просто дописал:
[vba]
Код
Private Sub ComboBox2_Change()
ComboBox2.SetFocus
End Sub
[/vba]

Автор - bratsk_vi
Дата добавления - 15.05.2013 в 10:17
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поместить курсор в нужном месте формы после ввода данных
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!