Страницы: 1
RSS
Как запустить макрос в надстройке сочетанием клавиш.
 
Всем доброго здравия!
Тренируюсь на кошках с надстройками.
Для теста написал маленький макрос:
Код
Sub CelBorders()
    Selection.Borders.LineStyle = xlContinuous
End Sub

ни как не могу заставить его работать по сочетанию клавиш, например Ctrl+"q" (или любое другое, счас не принципиально).
...ну и вопрос в заголовке, буду благодарен помощи.
 
висит у меня такая памятка. может подойдет.
Код
Private Sub Workbook_Open()
'в модуль листа
 Application.OnKey "^q", "Макрос4" 'ctrl+q(значек^)
 Application.OnKey "%q", "Макрос4" 'alt+q(значек%)
 Application.OnKey "+q", "Макрос4" 'shift+q(значек+)
End Sub

обязательно отключать при выходе иначе и в других файлах будет искать код

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
Application.OnKey "^q"
End Sub 
 
Пробовал... Пока *.xlms - работает; как только сохраняю в *.xlam - не реагирует...
и так пробовал:

Код
Private WithEvents App As Application

Private Sub Workbook_Open()
    Set App = Application
End Sub

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
    Application.OnKey "^q", "Макрос4"
End Sub
все в модуле книги; тоже не работает.
 
Код
Private Sub Workbook_Open()
    ThisWorkbook.IsAddin = True
    Application.OnKey "^q", "Макрос4"
End Sub
 
Для назначения гор.клавиш должна быть видима хотя бы одна книга. Иначе не сработает. Т.е. по сути, надо дождаться пока хоть одна книга отобразится.
Полагаю, лучше всего делать так(код в модуле ЭтаКнига надстройки):
Код
Private Sub Workbook_Open()
    application.OnTime Now, "CreateKeysMacro"
End Sub

Sub CreateKeysMacro()
   If IfVisibleWB = 0 then
       Workbooks.Add
   end if
   Application.OnKey "^q", "Макрос4"
end sub
'функция подсчета открытых книг
function IfVisibleWB()
    Dim wb As Workbook
    For Each wb In Workbooks
        If wb.Name <> ThisWorkbook.Name Then
            If wb.Windows(1).Visible Then
                IfVisibleWB = True
                Exit Function
            End If
        End If
    Next
end function
P.S. код писал на коленке и не проверял. Но OnTime крайне необходим для того, чтобы дождаться полной загрузки приложения и всех надстроек. Иначе можно просто получить ситуацию, что назначение клавиш начнет срабатывать раньше, чем все прогрузится и как следствие ноль эффекта.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх