Makro kontinuierlich ausführen, wenn Taste in QAT gedrückt wird

Makro kontinuierlich ausführen, wenn Taste in QAT gedrückt wird

Ich habe der „Symbolleiste für den Schnellzugriff“ (QAT) zwei Makros hinzugefügt. Makros dienen zum Navigieren nach links und rechts im Blatt, z. B. wenn Sie die Pfeile in der unteren rechten Ecke der Arbeitsmappe drücken. Wenn Sie sie drücken, verschieben sie die Zellen jeweils um eine Zelle nach links und rechts. Sie müssen weiter darauf klicken, um sich weiter nach links (oder rechts) zu bewegen. Ich möchte, dass sie kontinuierlich ausgeführt werden, z. B. wenn Sie die Pfeile unten rechts drücken. Excel ändert die Spalten weiter, wenn der Pfeil gedrückt wird, und stoppt, wenn Sie ihn loslassen. Das Makro muss weiter ausgeführt werden (Zellen ändern), wenn die Maustaste gedrückt wird, und stoppt, wenn ich sie loslasse. Ist das möglich? Kann diese Funktion zu Schaltflächen in der QAT hinzugefügt werden?

Antwort1

Dies kann durch die allgegenwärtigeAutoHotkey.

Erster Schritt: Suchen Sie in der QAT nach den Tastenkombinationen für die Makros.

Drücken Sie ALT, um die Kurznummern der QAT-Elemente anzuzeigen. Dadurch erhalten Sie die Kurznummer Alt+ numberzum Element. Nehmen wir an, die Nummer Ihres QAT-Elements war 8.

Zweiter Schritt: Erstellen Sie ein AutoHotkey-Skript, um das QAT-Element kontinuierlich auszuführen.

Der folgende Code wird durch langes Drücken der F12Taste aktiviert. Er sendet jede halbe Sekunde Alt+ an Excel, bis die Taste losgelassen wird8F12

Kopieren Sie das Folgende in eine .ahkDatei, wobei Sie ggf. „F12“ und „8“ ändern. Klicken Sie doppelt auf die Datei, um sie auszuführen. Es wird ein grünes „H“-Symbol in der Taskleiste erstellt, auf das Sie mit der rechten Maustaste klicken und es auswählen können, Exitum es zu stoppen. Wenn Sie möchten, dass dieses Skript immer ausgeführt wird, kopieren Sie es in den Startordner des Benutzers unter C:\Users\<user name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup.

SetTitleMatchMode, 2
#IfWinActive Excel

F12::
Loop:
KeyWait, F12, T0.5
err := Errorlevel
if (err) {
  Send, {LAlt}8
  Goto, Loop
}
return

verwandte Informationen