TL;DR — Excel hat zwei völlig verschiedene Systeme, um ein Makro über die Tastatur zu starten. Die Tastenkombination aus den Makrooptionen (Alt+F8 > Optionen, oder
Application.MacroOptionsim Code) wird in der Arbeitsmappe gespeichert und gilt, solange diese Datei geöffnet ist; sie akzeptiert nur Strg+Buchstabe oder Strg+Umschalt+Buchstabe.Application.OnKeywird per Code gesetzt, nimmt fast jede Taste an, auch F-Tasten, und gilt für die gesamte Excel-Sitzung, in jeder Arbeitsmappe, bis Sie es zurücksetzen. Nehmen Sie Strg+Umschalt+Buchstabe, denn Strg+Buchstabe ersetzt ohne jede Warnung Excels eigene Kombination, etwa Strg+C. Setzen Sie jedesOnKeyinWorkbook_BeforeClosezurück. Und wenn das Makro eine Arbeitsmappe öffnet, warten Sie zuerst, bis die Umschalttaste losgelassen ist — sonst beendet Excel Ihren Code direkt nachWorkbooks.Open.
' System 1: in der Datei gespeichert, gilt solange diese Mappe offen ist
Application.MacroOptions Macro:="FormatReport", _
HasShortcutKey:=True, ShortcutKey:="R" ' grosses R = Strg+Umschalt+R
' System 2: lebt in der Excel-Sitzung, bis es zurueckgesetzt wird
Application.OnKey "{F9}", "RefreshAll" ' zuweisen
Application.OnKey "{F9}" ' Excels eigenes F9 wiederherstellen
Dies ist der erste Artikel einer Reihe über Makros, die Excel für Sie startet: per Taste, per Uhrzeit mit OnTime oder über Tastenanschläge, die Sie mit SendKeys vortäuschen. Eine Idee verbindet alle drei, und sie erklärt die meisten Überraschungen: Keiner dieser Wege ruft Ihr Makro direkt auf. Jeder legt eine Anforderung in Excels Warteschlange, und Excel führt sie erst aus, wenn es untätig und bereit ist. Sie müssen also mit der Warteschlange planen: Was hält eine Anforderung auf, was entfernt sie, und was wartet noch, wenn die Arbeitsmappe geschlossen wird?
Was Sie lernen
- Das mentale Modell: zwei Systeme für Tastenkombinationen mit unterschiedlicher Reichweite und Lebensdauer
- Eine Tastenkombination im Dialog „Makro“ und mit
MacroOptionszuweisen OnKey: Tastencodes und die drei Formen des Aufrufs- Warum Strg+Buchstabe eine Falle ist — und Strg+Alt auf deutschen Tastaturen erst recht
- Die Umschalttaste, die ein Makro nach
Workbooks.Openabbricht - Aufräumen, damit eine Taste ihre Arbeitsmappe nicht überlebt
- Herausfinden, welche Tastenkombinationen eine Arbeitsmappe vergeben hat
Das mentale Modell: zwei Systeme, zwei Lebensdauern
Wenn Sie in Excel eine Taste drücken, sucht Excel nach etwas, das es ausführen kann. Es schaut an zwei Stellen nach, und die verhalten sich sehr unterschiedlich:
| Tastenkombination aus den Makrooptionen | Application.OnKey |
|
|---|---|---|
| Gesetzt über | Alt+F8 > Optionen, oder MacroOptions |
Code, meist in Workbook_Open |
| Gespeichert | in der Arbeitsmappe, beim Makro | nirgends; nur im laufenden Excel |
| Aktiv | solange diese Arbeitsmappe geöffnet ist | die ganze Sitzung, in jeder Arbeitsmappe |
| Tasten | Strg+Buchstabe oder Strg+Umschalt+Buchstabe | fast jede Kombination, F-Tasten, Enter, Entf |
| Endet | wenn die Arbeitsmappe geschlossen wird | wenn Sie es zurücksetzen oder Excel beendet wird |
Die linke Spalte ist eine Eigenschaft der Datei. Die rechte Spalte ist eine Änderung an Excel selbst, die Ihr Code vornimmt und die liegen bleibt, wenn Ihr Code sie nicht wieder rückgängig macht. Fast jeder Fehler mit Tastenkombinationen entsteht, weil man vergessen hat, welches der beiden Systeme man benutzt hat.
Beide Systeme folgen derselben Regel der Reihe: Excel beachtet die Taste nur, wenn es bereit ist. Solange eine Zelle im Bearbeitungsmodus ist, ein Dialog oder ein modales UserForm offen ist oder ein anderes Makro läuft, passiert beim Drücken der Kombination gar nichts.
System 1: die Tastenkombination aus den Makrooptionen
Der manuelle Weg: Drücken Sie Alt+F8, markieren Sie das Makro im Dialog „Makro“, klicken Sie auf die Schaltfläche Optionen und tippen Sie einen Buchstaben in das Feld Tastenkombination. Ein Kleinbuchstabe ergibt Strg+Buchstabe; halten Sie beim Tippen die Umschalttaste gedrückt, erhalten Sie Strg+Umschalt+Buchstabe.
Dasselbe im Code — praktisch, wenn Sie eine Arbeitsmappe per VBA aufbauen oder reparieren:
Sub AssignReportShortcut()
Application.MacroOptions Macro:="FormatReport", _
Description:="Format the active report sheet", _
HasShortcutKey:=True, _
ShortcutKey:="R" ' "r" = Strg+R, "R" = Strg+Umschalt+R
End Sub
Die Tastenkombination wird mit der Arbeitsmappe gespeichert, speichern Sie die Datei also danach. Sie funktioniert aus jeder geöffneten Arbeitsmappe heraus, solange diese eine geöffnet ist, und verschwindet mit der Datei. Genau deshalb ist sie die richtige Wahl für ein Makro, das zu einer bestimmten Arbeitsmappe gehört: Die Kombination reist mit der Datei und räumt hinter sich selbst auf.
Die Grenzen: nur Buchstaben (keine F-Tasten, kein Enter), keine Alt-Kombinationen, und das Makro muss ein
öffentliches Sub ohne Argumente in einem Standardmodul sein.
System 2: Application.OnKey
OnKey erwartet einen Tastencode und den Namen einer Prozedur:
Application.OnKey "^+r", "FormatReport" ' Strg+Umschalt+R
Application.OnKey "{F9}", "RefreshAll" ' F9
Application.OnKey "^{DEL}", "ClearInputs" ' Strg+Entf
Der Tastencode verwendet drei Präfixzeichen für die Zusatztasten und geschweifte Klammern für benannte Tasten:
| Code | Taste |
|---|---|
^ |
Strg |
+ |
Umschalt |
% |
Alt |
{F1} bis {F15} |
Funktionstasten |
{ENTER} oder ~ |
Enter (~ ist die Haupt-Eingabetaste) |
{DEL}, {INSERT}, {HOME}, {END} |
Entf, Einfg, Pos1, Ende |
{PGUP}, {PGDN}, {UP}, {DOWN} |
Bild auf, Bild ab, Pfeiltasten |
{ESC}, {TAB}, {BS} |
Esc, Tab, Rücktaste |
Die wichtigste Regel: Dieselbe Methode erledigt drei verschiedene Aufgaben — je nachdem, was Sie als zweites Argument übergeben:
Application.OnKey "^+r", "FormatReport" ' zwei Argumente: dieses Makro ausfuehren
Application.OnKey "^+r", "" ' leerer String: die Taste tut nichts
Application.OnKey "^+r" ' kein zweites Argument: wieder Excels Standard
Die letzten beiden werden ständig verwechselt. Um Ihre eigene Zuweisung rückgängig zu machen, brauchen Sie die
Form mit einem Argument. Der leere String dient dazu, eine Taste absichtlich zu sperren, etwa
Application.OnKey "^x", "", damit Benutzer in einer Vorlage keine Zellen ausschneiden — und sie bleibt
gesperrt, bis irgendetwas sie zurücksetzt.
Strg+Buchstabe ersetzt Excels eigene Tastenkombinationen
Legen Sie ein Makro auf Strg+C, Strg+S oder Strg+Z, und Excel warnt Sie mit keinem Wort. Solange die Arbeitsmappe geöffnet ist, startet die Taste Ihr Makro, statt zu kopieren, zu speichern oder rückgängig zu machen. Strg+Z ist der schlimmste Fall: Ein Benutzer drückt es, um einen Fehler rückgängig zu machen, Ihr Makro läuft — und ein Makro lässt sich seinerseits nicht rückgängig machen.
Fast jedes Strg+Buchstabe ist in Excel schon belegt. Strg+Umschalt+Buchstabe meist nicht, daher ist die Regel einfach: immer Strg+Umschalt+Buchstabe, in beiden Systemen.
Auf deutschen Tastaturen — und auf französischen, spanischen und vielen anderen europäischen — lauert eine
zweite Falle, und sie trifft gerade uns besonders hart. Für Windows ist AltGr nichts anderes als Strg+Alt.
Und mit AltGr tippen wir Zeichen, ohne die man im Büro keinen Tag übersteht: AltGr+Q für das @ in jeder
E-Mail-Adresse, AltGr+E für das €-Zeichen in jeder Preisliste, AltGr+8 und AltGr+9 für die eckigen Klammern
[ ], AltGr+7 und AltGr+0 für die geschweiften, AltGr+ß für den Backslash in jedem Dateipfad. Schreibt ein
Kollege mit US-Tastatur OnKey "^%q" (Strg+Alt+Q), fängt diese Zuweisung auf Ihrem Rechner jedes AltGr+Q ab:
Statt des @ startet ein Makro, und plötzlich lässt sich keine einzige E-Mail-Adresse mehr in eine Zelle
eintippen. Mit "^%e" verschwindet das Euro-Zeichen, mit "^%8" die eckige Klammer, die man für
strukturierte Verweise wie Tabelle1[Umsatz] braucht. Wird die Datei auf deutschsprachigen oder anderen
europäischen Tastaturen benutzt, verzichten Sie komplett auf Strg+Alt-Kombinationen.
Die Umschalttaste, die ein Makro nach Workbooks.Open abbricht
Dieser Fehler meldet sich mit dem Satz Mein Makro bleibt mittendrin stehen, wenn ich die Tastenkombination benutze, über die Schaltfläche Ausführen läuft es aber. Das Makro hat eine Strg+Umschalt-Kombination und öffnet eine Arbeitsmappe:
Sub ImportMonthly() ' zugewiesen auf Strg+Umschalt+I
Workbooks.Open "C:\Data\monthly.xlsx"
MsgBox "Imported" ' wird per Tastenkombination nie erreicht
End Sub
Die Umschalttaste gedrückt zu halten, während eine Arbeitsmappe öffnet, ist für Excel das Signal, die
Startmakros dieser Datei zu überspringen. Starten Sie das Makro mit Strg+Umschalt+I, liegt Ihr Finger noch auf
der Umschalttaste, wenn Workbooks.Open ausgeführt wird — und Excel beendet zusammen mit den Startmakros auch
den laufenden Code. Kein Fehler, keine Meldung: Der Code hört einfach auf.
Die Lösung: Warten Sie, bis die Umschalttaste losgelassen ist, bevor Sie irgendetwas öffnen:
#If VBA7 Then
Private Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
#Else
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
#End If
Private Const VK_SHIFT As Long = &H10
Sub ImportMonthly()
Do While GetKeyState(VK_SHIFT) < 0 ' negativ = Umschalttaste ist gedrueckt
DoEvents
Loop
Workbooks.Open "C:\Data\monthly.xlsx"
MsgBox "Imported"
End Sub
Die DoEvents-Anleitung erklärt, warum die Schleife DoEvents braucht: Erst dadurch
kann Excel das Loslassen der Taste überhaupt registrieren. Alternativ geben Sie Makros, die Dateien öffnen, per
OnKey eine Kombination ohne Umschalttaste, zum Beispiel eine F-Taste.
Aufräumen: Eine Taste darf ihre Arbeitsmappe nicht überleben
Eine OnKey-Zuweisung gehört Excel, nicht der Arbeitsmappe. Schließen Sie die Arbeitsmappe, zeigt die Taste
weiterhin auf das Makro: Ein Druck darauf kann Ihre Datei wieder öffnen, um das Makro auszuführen, oder mit
Cannot run the macro scheitern (deutsch: Das Makro ... kann nicht ausgeführt werden). Das Muster ist daher
immer ein Paar — beim Öffnen setzen, beim Schließen zurücksetzen:
' Im Modul ThisWorkbook
Private Sub Workbook_Open()
Application.OnKey "{F9}", "RefreshAll"
Application.OnKey "^+r", "FormatReport"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "{F9}" ' ein Argument = Standard wiederherstellen
Application.OnKey "^+r"
End Sub
Arbeiten die Benutzer in mehreren Arbeitsmappen gleichzeitig und sollen die Tasten nur in Ihrer gelten, nehmen
Sie stattdessen Workbook_Activate und Workbook_Deactivate. Die Anleitungen zu
Workbook_Open und BeforeClose behandeln diese
Ereignisse, auch den Fall, dass der Benutzer das Schließen abbricht.
Halten Sie die Liste der Tasten an einer einzigen Stelle, etwa in einer Prozedur SetKeys(enable As Boolean),
die beide Ereignisse aufrufen. Dann kann eine später hinzugefügte Taste beim Zurücksetzen nicht vergessen
werden.
Welche Tastenkombinationen hat diese Arbeitsmappe?
Es gibt keine Eigenschaft, die die Tastenkombinationen aus den Makrooptionen auflistet. Excel speichert jede
als verborgenes Attribut an der Prozedur. Sie sehen es, wenn Sie das Modul exportieren (Rechtsklick > Datei
exportieren) und die .bas-Datei in einem Texteditor öffnen:
Sub FormatReport()
Attribute FormatReport.VB_ProcData.VB_Invoke_Func = "R\n14"
R ist die Taste, ein Großbuchstabe bedeutet Strg+Umschalt. Im VBA-Editor ist die Zeile unsichtbar — deshalb
kann eine Tastenkombination jahrelang überleben, nachdem alle sie längst vergessen haben. OnKey-Zuweisungen
werden nirgends gespeichert; die einzige Liste ist Ihr eigener Workbook_Open-Code. Ein Grund mehr, sie in
einer einzigen Prozedur zu bündeln.
Die Abwägung: Datei-Tastenkombinationen für Dateien, OnKey für Werkzeuge
Nehmen Sie die Tastenkombination aus den Makrooptionen für ein Makro, das zu einer Arbeitsmappe gehört. Sie wird mit der Datei gespeichert, endet mit der Datei und braucht keinen Aufräumcode.
Nehmen Sie OnKey nur, wenn Sie brauchen, was nur OnKey bietet: F-Tasten und andere Nicht-Buchstaben,
oder eine Kombination, die ein Add-In oder die Personal.xlsb in jeder Arbeitsmappe bereitstellt. Behandeln Sie
es dann als Eingriff in das Excel des Benutzers, den Sie rückgängig machen müssen — mit einem Zurücksetzen für
jede Taste, die Sie setzen.
In beiden Fällen gilt: Strg+Umschalt+Buchstabe, niemals Strg+Buchstabe, niemals Strg+Alt in Dateien, die auf europäischen Tastaturen landen. Eine Tastenkombination hilft nur, wenn sie keine Taste kaputt macht, auf die sich der Benutzer bereits verlässt.
Wie ExcelMaster hilft
Probleme mit Tastenkombinationen sieht man schlecht: Die Zuweisung ist ein verborgenes Attribut oder eine Zeile in einer Ereignisprozedur, und das Symptom ist eine Taste, die nichts mehr kopiert, oder ein Makro, das ohne Fehlermeldung stehen bleibt.
ExcelMaster liest die Module der
Arbeitsmappe, listet jede Tastenkombination und jede OnKey-Zuweisung auf, markiert die, die Excels eigene
Tasten überschreiben oder nie zurückgesetzt werden, und kann Ihnen das passende Paar aus Workbook_Open und
Workbook_BeforeClose schreiben.
Häufig gestellte Fragen
Wie weise ich in Excel einem Makro eine Tastenkombination zu?
Drücken Sie Alt+F8, markieren Sie das Makro, klicken Sie auf Optionen und tippen Sie einen Buchstaben in das
Feld Tastenkombination. Halten Sie beim Tippen die Umschalttaste gedrückt, um Strg+Umschalt+Buchstabe zu
erhalten — so ersetzen Sie keine von Excels eigenen Kombinationen. Im Code verwenden Sie
Application.MacroOptions mit HasShortcutKey:=True und ShortcutKey:="R".
Was ist der Unterschied zwischen OnKey und einer Makro-Tastenkombination?
Eine Tastenkombination aus den Makrooptionen wird in der Arbeitsmappe gespeichert und gilt, solange diese
Datei geöffnet ist, aber nur mit Buchstaben. Application.OnKey wird per Code gesetzt, funktioniert mit fast
jeder Taste einschließlich F-Tasten und gilt für die ganze Excel-Sitzung, bis es zurückgesetzt wird.
Wie setze ich eine mit Application.OnKey belegte Taste zurück?
Rufen Sie OnKey nur mit dem Tastencode auf, zum Beispiel Application.OnKey "{F9}". Ein leerer String als
zweites Argument setzt die Taste nicht zurück, sondern sperrt sie.
Warum bricht mein Makro nach Workbooks.Open ab, wenn ich die Tastenkombination benutze?
Eine gedrückte Umschalttaste beim Öffnen einer Arbeitsmappe weist Excel an, deren Startmakros zu überspringen,
und das beendet auch Ihren laufenden Code. Warten Sie in einer Schleife mit GetKeyState, bis die
Umschalttaste losgelassen ist, oder verwenden Sie eine Kombination ohne Umschalttaste.
Kann ich F-Tasten als Makro-Tastenkombination verwenden?
Nicht im Dialog Makrooptionen, der nur Buchstaben annimmt. Verwenden Sie Application.OnKey "{F9}", "MyMacro"
in Workbook_Open und setzen Sie es mit Application.OnKey "{F9}" in Workbook_BeforeClose zurück.
Getestet in
Getestet in: Excel 365 (Windows 11), VBA 7.1 — zuletzt geprüft am 03.10.2026.
Verwandte Anleitungen: VBA OnTime · VBA SendKeys · VBA Workbook_Open · VBA Workbook_BeforeClose · VBA DoEvents · VBA Open Workbook · VBA Application.Run · VBA Sub
