Страницы: 1
RSS
Нажатие ENTER
 
Здравствуйте!  
Вроде бы вопрос не должен быть проблемой, но я никак не могу разобраться. У меня на рабочем листе имеется элемент CommandButton1. Когда данный лист активирован нужно чтобы по нажатию на клавишу ENTER срабатывали команды под этой кнопкой. Читал что за это отвечает событие Application.OnKey  
Подскажите как правильно написать данный код и куда его необходимо поместить?
 
не совсем понятно, что такое "команды под кнопкой", но в общем случае назначить можно так (назначение на enter происходит при активировании Лист1)
 
В код листа (туда же, где код обработки нажатия кнопки):  
 
Private Sub Worksheet_Activate()  
Application.OnKey "~", Me.CodeName & ".CommandButton1_Click"  
Application.OnKey "{ENTER}", Me.CodeName & ".CommandButton1_Click"  
End Sub  
 
Private Sub Worksheet_Deactivate()  
Application.OnKey "~"  
Application.OnKey "{ENTER}"  
End Sub
 
Application.OnKey "~"  
Application.OnKey "{ENTER}"  
 
А это не одно и тоже?
 
"~" - Enter на основной клавиатуре,  
{ENTER} - Enter на цифровой клавиатуре (numeric keypad).
 
{quote}{login=Казанский}{date=01.08.2011 04:54}{thema=}{post}"~" - Enter на основной клавиатуре,  
{ENTER} - Enter на цифровой клавиатуре (numeric keypad).{/post}{/quote}  
 
А, понятно. Мне не грозит - у меня цифрового блока на клавиатуре нет :)  
Спасибо
 
Спасибо, все работает))  
А что значит Me.CodeName?
 
Me - объект, в котором находится код, в данном случае лист.  
CodeName - внутреннее имя листа, оно не меняется при переименовании листа обычным способом.  
 
Более подробно - поставьте курсор в интересующее слово и нажмите F1.
 
{quote}{login=Казанский}{date=01.08.2011 05:14}{thema=}{post}Me - объект, в котором находится код, в данном случае лист.  
CodeName - внутреннее имя листа, оно не меняется при переименовании листа обычным способом.  
 
Более подробно - поставьте курсор в интересующее слово и нажмите F1.{/post}{/quote}  
Благодарю!
 
Заметил вещь одну. Когда я перехожу с рабочего листа где расположен данный код на другой лист, но остаюсь в той же книге, то обработка клавиши ENTER очищается и происходит все как прежде (переход на ячейку ниже). Но вот когда после того самого листа с кодом я перехожу в другую книгу и нажимаю клавишу ENTER, то код срабатывает(CommandButton1_Click). Т.е. как я понял событие Worksheet_Deactivate работает только при смене рабочего листа в той же книге, но не работает при смене самой книги.    
Неприятная вещь, потому что хочется чтобы в документах не относящихся к моему макросу, клавиша ENTER выполняла стандартную функцию. Как нибудь можно это вылечить?
 
Не пробовал, но ведь есть ещё  
Private Sub Workbook_Deactivate()  
 
Поставьте туда код  
 
Application.OnKey "~"  
Application.OnKey "{ENTER}"
 
{quote}{login=Hugo}{date=02.08.2011 05:12}{thema=}{post}Не пробовал, но ведь есть ещё  
Private Sub Workbook_Deactivate()  
 
Поставьте туда код  
 
Application.OnKey "~"  
Application.OnKey "{ENTER}"{/post}{/quote}  
Попробовал. Что-то она зараза все равно срабатывает
 
В приложении смотрите код в модуле ЭтаКнига
 
Здорово! Теперь все как нужно:) Спасибо
Страницы: 1
Читают тему
Наверх