Страницы: 1
RSS
Запуск двух сценариев для одного и того же макроса в зависимости от зажатой клавиши, макрос с параметрами Onkey
 
Добрый день, подскажите, можно ли реализовать запуск двух сценариев для одного и того же макроса в зависимости от переданного параметра, а именно зажатой клавишей при запуске макроса?

К примеру, есть кнопка или на листе экселя или вынесенная на панель инструментов и к ней подвязан макрос, который пусть выполняет закрашивание ячейки в красный цвет.
Но если пользователь предварительно зажмет клавишу, скажем, Ctrl и затем кликнет эту кнопу с макросом, то ячейка уже должна будет закраситься в желтый цвет.
 
Александр, это очень плохая идея - выводите диалоговое окно для опциональности
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Через Onkey, похоже, можно вызывать макросы с параметрами.
Код
' Устанавливает вызов MyProc с аргументом 2 при нажатии Ctrl+9
Sub TestOnkey()
  Application.OnKey "^9", "'MyProc(2)'"
End Sub

' Отменяет назначение комбинации Ctrl+9
Sub CancelOnkey()
  Application.OnKey "^9"
End Sub

Sub MyProc(arg)
  Debug.Print "Myproc", arg
End Sub
Владимир
 
как вариант при клике по кнопке сохранять в глобальной переменной значение. например цвет
а макрос считает его
как в графических редакторах
Изменено: Александр Моторин - 11.02.2021 22:17:59
 
для Win32 сами, но учтите например на некоторых объектах Excel не даст кликнуть если нажата кнопка

Код
Private Declare PtrSafe Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

' The state of the Ctrl key
Function CtrlKey() As Boolean
    CtrlKey = (GetAsyncKeyState(vbKeyControl) And &H8000)
End Function
'
' The state of either Shift keys
Function ShiftKey() As Boolean
    ShiftKey = (GetAsyncKeyState(vbKeyShift) And &H8000)
End Function

' The state of the Alt key
Function AltKey() As Boolean
    AltKey = (GetAsyncKeyState(vbKeyMenu) And &H8000)
End Function

Sub macro1()
Debug.Print CtrlKey
End Sub
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх