🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

VBA-Tastenkombinationen in Excel — Makros per Strg+Umschalt starten, mit OnKey und MacroOptions

|

VBA-Tastenkombinationen in Excel — Makros per Strg+Umschalt starten, mit OnKey und MacroOptions

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.MacroOptions im Code) wird in der Arbeitsmappe gespeichert und gilt, solange diese Datei geöffnet ist; sie akzeptiert nur Strg+Buchstabe oder Strg+Umschalt+Buchstabe. Application.OnKey wird 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 jedes OnKey in Workbook_BeforeClose zurück. Und wenn das Makro eine Arbeitsmappe öffnet, warten Sie zuerst, bis die Umschalttaste losgelassen ist — sonst beendet Excel Ihren Code direkt nach Workbooks.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 MacroOptions zuweisen
  • 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.Open abbricht
  • 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