Страницы: 1
RSS
VBA. Фокус с UserForm на лист.
 
Здравствуйте.  
Имеется Userform (vbModeless)  
На листе выбирается ячейка, нажимается кнопочка на форме и в текстбокс вставляется номер столбца ячейки.  
Как можно сделать, чтобы после нажатия кнопки на userform, автоматически активировалось окно листа, а не userform?  
т.е. фокус чтобы переходил обратно на ячейку?  
Спасибо.
 
Unload.Me?  
Или вопрос связан с модальностью?
 
Код
Private Sub CommandButton1_Click()   
Dim r As Range: Set r = Selection   
Me.TextBox1 = r.Column   
r.Parent.Activate   
r.Activate   
End Sub  

Хотя я бы сделал так:  
в обычном модуле объявил бы переменную:  
Код
Public rTarget As Range   

Затем:  
Код
Private Sub CommandButton1_Click()   
Set rTarget = ActiveCell   
UserForm1.Show vbModeless   
End Sub  

и в модуле формы:  
Код
Private Sub CommandButton1_Click()   
Me.TextBox1 = rTarget.Column   
rTarget.Parent.Activate   
rTarget.Activate   
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
спасибо :)
 
Дмитрий. вставила две строчки кода, но все равно активно окно userform.  
А смысл, собственно, вот в чем: на листе курсором выбираю ячейку - нажала кнопочку, дальше курсором выбираю другую ячейку - другую кнопочку. Но вот после нажатия на кнопку, курсор начинает бегать по userform, а не по листу.
 
Диана, а Вы после нажатия ввод попробуйте воспользоваться клавиатурой - хотя бы стрелками поперемещаться. Переход будет осуществляться по ячейкам листа.  
 
На всякий случай прикладываю пример. У меня работает(Excel 2010)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий, а у меня тоже 2010-й, но по userform перемещается... :(
 
может, в настроечках где-нибудь покопаться?
 
Может это?      
Код
Private Sub CommandButton1_Click()   
Dim r As Range: Set r = Selection   
Me.TextBox1 = r.Column   
AppActivate "Microsoft Excel"   
End Sub
 
> AppActivate  
бинго. Но я бы написал Application.Name
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
или просто AppActivate Application
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
http://www.planetaexcel.ru/forum.php/news.php?thread_id=37378  
А я запомнил. :)
 
Здравсвтуйте.  
Спасибо за помощь всем.  
 
На строке: AppActivate "Microsoft Excel"  
или AppActivate Application.Name  
выдает ошибку:  
Run-time error '5'  
Invalid procedure call or argument  
 
С чем может быть связано?  
Спасибо.
 
с тем, что отсутствует файл с примером
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Здравствуйте всем.  
Вот он файлик с примером, где выдается ошибка:  
 
Run-time error '5'  
Invalid procedure call or argument
 
Обе кнопки работают.
 
У меня тоже никакой ошибки не наблюдается.
 
Здравствуйте еще раз.  
Давайте попробуем по-порядку, у всех работает, у меня - нет.  
Может, библиотека какая отключена?  
у меня:  
-Visual Basic for Application  
-Microsoft Excel 14.0 Object Library  
-OLE Automation  
-Microsoft Office 14.0 Object Library  
-Microsoft Forms 2.0 Object Library  
-Autocad 2007 Type Library  
 
Может, чего-то не хватает?  
Спасибо.  
 
[20222]
 
все библиотеки тоже, кроме Автокада.  
Эксель 2010.  
Все работает.
 
Может Автокад и мешает?
 
Диана, такая ошибка возникает, если форма модальная, например, если она запускается на форме из VBE по F5 или из меню.  
Попробуйте на форме нажать F4 и вручную установить свойство ShowModal = False
 
ZVI, спасибо большое за совет, и правда помогло.
 
Диана, это одно из тех чудес, которые иногда случаются, рад, что помогло. :-)  
Вообще, причины могли быть от простых, что я привел, до курьезных, например, присвоение (локальной) константе vbModeless единичного значения вместо нулевого.
Страницы: 1
Наверх