Страницы: 1
RSS
Формы в VBA. Фокус в текстбоксе.
 
Простенькая форма - текстбокс и кнопка "ОК".  
Как сделать, что бы после нажатия "ОК" курсор возвращался в текстбокс.  
И второе - как сделать, что бы по ентер выполнялся "ОК".  
 
..имхо, пример здесь не нужен...
 
Михаил, зря думаете, что файл не нужен, очень даже нужен.    
Я все коды, которые выкладываю на форум стараюсь обязательно протестировать в макросе. Т.к. мало кто сразу из головы пишет код, обычно его тестируют и потом уже выкладывают  
 
Т.е. для того, чтобы ответить вам мне пришлось самому создать файл (xls), а у меня стоит Excel 2010 пришлось пересохранять файл (в Excel 2010 формат файла xlsx), создать форму, кинуть на неё TextBox и кнопку, переименовать кнопку, написать код, потестировать его и вам выложить файл с макросом (((  
Если бы был ваш пример, мне было бы удобнее    
 
 
Павел
 
Там еще бонус - нажатие Esc :)  
 
Ластик сегодня открыл школу VBA :)
 
И не говори, Вить. Хотел пораньше сегодня лечь... ещё не лёг... 5:55 утра )))
 
Спасибо, конечно. Я думал, что для тех, кто пишет макросы постоянно, эти строчки уже на автомате. Мне бы тоже хватило строчек кода без примера, но раз сделали - извините и спасибо!  
 
зы я тоже еще не ложился, уже, наверно и не лягу...
 
Возникли некоторые проблемы...  
По нажатию на энтер фокус уходит из тестбокса, приходится его либо мышкой, либо 10 раз на ТАБ.  
После выборя флажка ни ЭНТЕР ни ЭСК не работают.  
И еще одна проблема - как сделать проверку текстбокса на ввод данных? должны быть числа.
 
Может так?
 
ZVI помогал. Проверка и форматирование полей (число с разделителями разрядов).  
 
   If Me.tBox.Text <> "" Then  
       If IsNumeric(Me.tBox) Then  
           Me.tBox = Format(Me.tBox, "#,##0.00")  
       Else  
           MsgBox "Попытка ввода нечисловых данных! Введите число"  
           Me.tBox.SelStart = 0  
           Me.tBox.SelLength = Len(Me.tBox)  
           Cancel = True  
       End If  
   End If
 
И для всех чекбоксов  
Private Sub Dozir_Click()  
Cart_№.SetFocus  
End Sub  
Private Sub Fotoval_Click()  
Cart_№.SetFocus  
End Sub  
Private Sub Magnit_Click()  
Cart_№.SetFocus  
End Sub  
Private Sub Rakel_Click()  
Cart_№.SetFocus  
End Sub  
Private Sub Zaprav_Click()  
Cart_№.SetFocus  
End Sub  
Private Sub Zaryad_Click()  
Cart_№.SetFocus  
End Sub
 
Спасибо, буду пробовать.
 
Можно еще добавить  
Private Sub ОК_Enter()  
ОК_Click  
End Sub
 
Андрей, спасибо, с энтером разобрались.
 
Вот два одинаковых файла, один .xls, другой - .xlsm. .xls - работает как надо; .xlsm - не работает...  
офис 2010.    
Может только у меня?
 
Я вчера в xls у всех контролов, окромя текстбокса и кнопки ОК, tabstop = false поставил.
 
у меню оба работают, офис 2010.
 
{quote}{login=RAN}{date=24.01.2012 12:24}{thema=}{post}Я вчера в xls у всех контролов, окромя текстбокса и кнопки ОК, tabstop = false поставил.{/post}{/quote}Я это не проверял... счас проверил - тогда по Тав не работает... прочем, я Тав редко пользуюсь..  
 
Димон, что, по ентер добавляется строка и курсор в текстбоксе? в .xlsm?
 
Притомился искать.  
ошибку дает строка  
'    If KeyCode = vbKeyReturn Then Cart_№.SetFocus: Me.ОК = True  
в xls она отключена, в xlsm - нет
 
У меня одинаково работает, что с этой строкой, что без нее... :)
 
Виктор хороший код показал, только забыл написать, что этот код для события Exit, а не Change.  
Бинарное отрицание вещь хорошая, но при №="" --№ дает ошибку, а Val(№) - 0.    
И в Public № никакой нужды нет.
 
{quote}{login=RAN}{date=24.01.2012 01:56}{thema=}{post}Виктор хороший код показал, только забыл написать, что этот код для события Exit, а не Change.  
Бинарное отрицание вещь хорошая, но при №="" --№ дает ошибку, а Val(№) - 0.    
И в Public № никакой нужды нет.{/post}{/quote}  
Спасибо, правда я еще не решил, какой вариант использовать - Виктора или ваш.  
А № в Public остался от первоначального варианта - я хотел все это делать в модуле.  
 
И все же, как заставить работать Enter не отключая Тав.... или это версия офиса такая?
 
Решил проблему.
 
Интересный вариант. Осталась мелочь - решить, что делать с чекбоксом после перехода в него по таб.
 
Что хочешь, то и делай. А обработка чекбоксов в теле Private Sub CommandButton1_Click(). Я просто не стал этого писать - проблема была не в этом.  
чекбокс, как обычно, по нажатию пробел меняет свое значение.
 
Хочу True на False сменить. Как? Мышом? Или специальной кныпочкой? Или??? :)
 
Клавишей "пробел"
Страницы: 1
Читают тему
Наверх