Интересно, в связи с огромным кол-вом листов,
возникло желание иметь доступ к книге, например,
по первой букве Alt+Первая буква имени листа....
Можно ли так?
Конечно, можно, вопрос только, как это сделать )
Я бы предложил на открытие книги повесить бесконечный цикл с DoEvents и в этом цикле через API отлавливать нажатие нужных кнопок.
Но думаю, есть способ попроще
1) Вставляем в проект пустую форму.
2) Вставляем в лист модуль
3) В модуле листа пишем макрос запускающий форму:
Sub запускФормы()
UserForm1.Show
End Sub
4)Назначаем для него горячие клавишы (допустим CTRL - о)
5) В модуле формы создать событийную процедуру
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii > 256 Then
KeyAscii = KeyAscii - 848
End If
If KeyAscii < 256 And KeyAscii >= 0 Then
For Each w In ThisWorkbook.Worksheets
If Mid(w.Name, 1, 1) = Chr(KeyAscii) Then
ThisWorkbook.Worksheets(w.Name).Select
Exit For
End If
Next w
End If
Unload UserForm1
End Sub
Действуем следующим образом:
1)
запускаем форму через макрос
Ctrl +o
2) Отпустить Ctrl +o
3)На нужном регистре (английский /Русский) нажимаем нужную букву, при необходимости жмем Shift, т.к. программа распознает и заглавные и прописные буквы.
4) Если есть лист в имени которого содержится первая указанная буква, программа передет на него
П.С.
Горячую клавишу для макроса лучше задать программно, что бы не быть связанным с русским и английским регистром.
Sonata: имя объекта Application было написано не правильно!
Надо вот так:
Application.OnKey "^%{1}", "Show_Form"
или вообще без него:
OnKey "^%{1}", "Show_Form"
Calvin: Load и загружает форму в память и показывает ее на экран.
Метод Show -показывает на экран уже загруженную форму, но если она не загруженна автоматически она загружается.
Hide - скрывает форму, но она остается в памяти.
UnLoad - скрывает форму и выгружает ее из памяти
Я, конечно, извиняюсь за свою непонятливость,
Все исправила, как вы посоветовали, ошибок не возникает, но
форма опять не вызывается...
Где должна быть процедура :
Sonata: Процедура должна быть в модуле макросов.
Там к сожалению можно применять только алфавитную клавишу, 1 - нельзя, например малую j , тогда макрос будет срабатывать и на большой J и на русской букве О о.
Последний раз редактировалось Vitaly1 24.04.2003 (Чт) 15:09, всего редактировалось 1 раз.
2 Vitaly1
просто тут довольно частный случай. Вот допустим, если поместить в окно кода формы1 вышеуказанную процедуру, в которой вызывается допустим форма2, то это работает.....
Sonata: Пример выслал. Цифру оказывается тоже можно задавать для запуска макроса, но при этом, в отличии от буквенной клавиши, цифровая клавиша в фигурные скобки не берется,
Application.OnKey "^%1", "Show_Form"