Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tastenkombination simulieren

Tastenkombination simulieren
28.07.2006 21:31:01
Martin
Hallo
Ist es möglich in VBA das Drücken der Tasten Strg + Z zu simulieren. Ich möchte damit eine Rückgängig Funktion in meine Datei einbauen. Application.Undo ist für mich ungeeignet da hier nur die letzte Eingabe rückgängig gemacht wird . Wenn man dieses Command erneut ausführt, wird das was rückgängig gemacht wurde, selbst rückgängig gemacht (also wiederholt)!
Bin dankbar für jede Hilfe.
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tastenkombination simulieren
28.07.2006 21:33:11
Matthias
Hallo Martin,
das geht so:

Application.SendKeys "^z"

Gruß Matthias
AW: Tastenkombination simulieren
28.07.2006 22:17:04
Martin
Leider passiert nichts! Aber wenn ich die Tasten per Hand drucke, klappt's
Das geht nicht...
28.07.2006 22:23:08
{Boris}
Hi Martin,
VBA-Aktionen lassen sich nicht mehrfach rückgängig machen.
Grüße Boris
Anzeige
AW: Das geht nicht...
28.07.2006 22:31:14
Martin
Die eigentliche VBA Aktionen werden damit nicht rückgängig gemacht. Ich habe in meiner Datei eigene Menüleisten - die Standard Leisten sind ausgeblendet. Es gibt mehrere Tabellen in denen man Eingaben machen kann. Ich brauche eine Rückgängig Funktion falls man sich "vertippt". Ich habe gehofft dies mit der Funktion
Application.SendKeys ("^z")
zu verwirklichen.
Geht's wirklich nicht
Anzeige
AW: Das geht nicht...
28.07.2006 22:33:15
{Boris}
Hi Martin,
Es gibt mehrere Tabellen in denen man Eingaben machen kann
Wie macht man denn die Eingaben? Gesteuert über Deine Menüleisten?
Es bleibt dabei: Es geht nicht (oder es ist mir nicht bekannt).
Grüße Boris
AW: Das geht nicht...
28.07.2006 22:39:51
Martin
Man klickt mit der Maus eine Zelle an und tippt eine Nummer ein. Die SendKeys Geschichte sollte über die MenüLeiste laufen. So

Sub NeuesMenüEinfügen1()
Dim i As Integer
Dim i_Hilfe As Integer
Dim MenuNew As CommandBarControl
i = Application.CommandBars(1).Controls.Count
i = Application.CommandBars(1).Controls.Count
i_Hilfe = Application.CommandBars(1).Controls(i).Index
Set MenuNew = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, Before:=i_Hilfe, Temporary:=True)
MenuNew.Caption = "&Dienstplanorganizer"
Set MB = MenuNew.Controls.Add(Type:=msoControlButton)
With MB
.Caption = "&Eingabe Rückgängig Machen"
.OnAction = "BackChanges"
.FaceId = 2521
.BeginGroup = True
End With
End Sub


Sub BackChanges()
Application.SendKeys ("^y")
End Sub

So hab ich mir das Ganze vorgestellt:-) Aber wenn's nicht geht muss ich eine MsgBox einblenden wo drauf steht, dass man ^z drucken muss um die Eingaben rückgängig zu machen. Isss aber weniger elegant
Anzeige
AW: Das geht nicht...
28.07.2006 22:46:14
K.Rola
Hallo,
Application.SendKeys "^z" wird nicht als VBA-Aktion gewertet, es muss funktionieren.
Wie rufst du das denn auf?
Sobald aber eine VBA-Aktion abläuft, wird die Rückgängigliste gelöscht.
Gruß K.Rola
AW: Das geht nicht...
28.07.2006 22:59:56
Martin
Es sollte über einen Eintrag in meiner Menüleiste gestartet werden! Durch klichen auf den Eintrag startet das Makro.
Anzeige
AW: Das geht nicht...
28.07.2006 23:02:35
K.Rola
Hallo,
hab inzwischen deinen Code gesehen und getestet, funktioniert doch, bei dir nicht?
Gruß K.Rola
AW: Das geht nicht...
28.07.2006 23:09:49
Martin
Leider passiert bei mir gar nichts. Kann es eventuell am Blattschutz liegen? Bin echt am verzweifeln! Das Witzige ist dass wenn ich die Tasten selbe drucke, dann klappt's
AW: Das geht nicht...
28.07.2006 23:15:50
K.Rola
Hallo,
bei Blattschutz funktioniert das nicht.
Gruß K.Rola
Anzeige
Seltsame Dinge
28.07.2006 23:35:05
Martin
Ich habe die Datei gespeichert und dann beendet. Ich hab sie wie geöffnet und siehe da, es geht! Danke für deine Geduld!
;
Anzeige
Anzeige

Infobox / Tutorial

Tastenkombination in Excel VBA simulieren


Schritt-für-Schritt-Anleitung

  1. Öffne deinen Excel-Arbeitsbereich und gehe zu Visual Basic for Applications (VBA) mit ALT + F11.
  2. Erstelle ein neues Modul:
    • Klicke im Projektfenster mit der rechten Maustaste auf "VBAProject (deinWorkbookName)" und wähle „Einfügen“ > „Modul“.
  3. Füge den folgenden Code in das Modul ein:
    Sub BackChanges()
       Application.SendKeys "^z"
    End Sub

    Dieser Code simuliert den Tastendruck für die Rückgängig-Funktion (Strg + Z).

  4. Rufe das Makro über eine Schaltfläche oder ein Menü auf:
    • Erstelle eine Schaltfläche oder erweitere deine Menüleiste, um das Makro „BackChanges“ auszuführen.
  5. Testen: Klicke auf die Schaltfläche oder den Menüeintrag, um die Rückgängig-Funktion zu testen.

Häufige Fehler und Lösungen

  • Fehler: "Es passiert nichts!"

    • Dies könnte daran liegen, dass der Blattschutz aktiv ist. Deaktiviere den Blattschutz, um sicherzustellen, dass VBA die Tastenanschläge simulieren kann.
  • Fehler: "Die Rückgängig-Aktion funktioniert nicht"

    • Wenn eine VBA-Aktion abläuft, wird die Rückgängig-Liste in Excel gelöscht. Daher ist es wichtig, die Rückgängig-Funktion direkt nach der gewünschten Aktion auszuführen.

Alternative Methoden

Falls Application.SendKeys nicht funktioniert, kannst du alternativ die Excel-eigene Rückgängig-Funktion verwenden, wenn es nur um die letzte Aktion geht:

Sub UndoLastAction()
    Application.Undo
End Sub

Dieser Code stellt die letzte Aktion wieder her, hat jedoch den Nachteil, dass er nur eine Aktion rückgängig machen kann.


Praktische Beispiele

Ein Beispiel für die Verwendung des Codes wäre, wenn du ein benutzerdefiniertes Menü oder eine Schaltfläche in deiner Excel-Datei hast, um die Rückgängig-Funktion einfach zugänglich zu machen. Hier ist ein Beispiel zum Hinzufügen eines Menüs:

Sub NeuesMenüEinfügen()
    Dim MenuNew As CommandBarControl
    Set MenuNew = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, Temporary:=True)
    MenuNew.Caption = "&Rückgängig"
    MenuNew.Controls.Add(Type:=msoControlButton).OnAction = "BackChanges"
End Sub

Tipps für Profis

  • Verwende Application.OnTime: Wenn du eine verzögerte Ausführung benötigst, kannst du Application.OnTime verwenden, um andere Aktionen zu timen.
  • Debugging: Wenn du Probleme hast, verwende Debug.Print in deinem Code, um den Status und die Variablen während der Ausführung zu überwachen.
  • Sicherung: Erstelle immer eine Sicherungskopie deiner Datei, bevor du VBA-Code anwendest, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Warum funktioniert Application.SendKeys nicht bei mir? Es kann sein, dass der Blattschutz aktiviert ist oder ein anderes VBA-Skript die Rückgängig-Liste löscht.

2. Kann ich mehrere Aktionen rückgängig machen? Mit Application.SendKeys ist es nicht möglich, mehrere Rückgängig-Aktionen zu simulieren, da jede VBA-Aktion die Rückgängig-Liste leert. Verwende stattdessen Application.Undo für die letzte Aktion.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige