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

Forumthread: Aktion bei Drücken der Eingabetaste in Zelle

Aktion bei Drücken der Eingabetaste in Zelle
03.11.2005 19:30:24
Jens
Hallo!
Sicher gibt's hierfür eine Lösung - nur find ich sie nicht :-)
Ich möchte, dass bei Drücken der Eingabetaste in einer ganz bestimmten Zelle eine bestimmte VBA-Aktion ausgeführt wird.
Wie geht das?
Vielen Dank sagt schon mal
der Jens
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktion bei Drücken der Eingabetaste in Zelle
03.11.2005 19:56:32
Erich
Hallo Jens,
das geht it OnKey:

Application.OnKey "~", "DeineAktion"
Application.OnKey "{ENTER}", "DeineAktion"

Später (vielleicht beim Verlassen des Tabellenblatts) solltest du wohl die Tastenaktion wieder aufheben:

Application.OnKey "~"
Application.OnKey "{ENTER}"

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Aktion bei Drücken der Eingabetaste in Zelle
03.11.2005 20:05:06
Erich
Hallo Jens,
Heikos Lösung ist natürlich besser, wenn es um die Änderung der Zelle geht.
Die "OnKey"-Möglichkeit solltest du nur dann nutzen, wenn das Drücken der Entertaste auch ohne Änderung des Zellinhalts die Aktion auslösen soll.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
nur formal - hatte /pre vergessen
03.11.2005 20:08:45
Erich
Damit der hiernach folgende Text wieder normal wird:

Grüße von Erich aus Kamp-Lintfort
AW: nur formal - hatte /pre vergessen
03.11.2005 20:11:09
Erich
... reichte wohl noch nicht, also noch mal:

Wenn das so nicht funzt: Bitte um Entschuldigung!
Grüße von Erich aus Kamp-Lintfort
AW: Aktion bei Drücken der Eingabetaste in Zelle
03.11.2005 20:01:11
Heiko
Hallo Jens,
wenn du in der Zelle was änderst und dann ENTER drückst, reagiert dieser Code darauf.
In das Tabellenblatt.
Tabellenreiter mit rechter Maustaste anklicken.
Code anzeigen aufrufen.
Code in das nun erscheinende Fenster kopieren.
Ausprobieren.

Private Sub Worksheet_Change(ByVal Target As Range)
' Wenn mehr als eine Zelle ausgewählt wurde nichts tun.
If Target.Count > 1 Then Exit Sub
' Wenn Zelle A1 gemeint ist so, für C23 z.B. "$C$23"
If Target.Address = "$A$1" Then
MsgBox " Hier soll nun was ganz bestimmtes passieren !", vbInformation, " Info !"
' Hier kann dann mehr Code rein, oder ein anderes Makro aufgerufen werden.
End If
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett
Anzeige
AW: Aktion bei Drücken der Eingabetaste in Zelle
03.11.2005 20:01:19
Erich
Hallo Jens,
ich hab noch was überlesen: "in einer ganz bestimmten Zelle".
In "DeineAktion" kannst du z. B. mit
If ActiveCell.Address(0, 0) "C7" then Exit Sub
diese Zelle abfragen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Aktion bei Drücken der Eingabetaste in Zelle
03.11.2005 20:39:56
Jens
Hallo Heicko & Erich,
danke für eure Tipps!
Tatsächlich - das hatte ich vergessen zu erwähnen - soll der Code auch ausgeführt werden, wenn in der Zelle nichts geändert wird.
Damit fällt Worksheet_Change flach. Ist also Application.OnKey die einzige Möglichkeit?
LG,
Jens
Anzeige
AW: Aktion bei Drücken der Eingabetaste in Zelle
04.11.2005 07:54:27
Heiko
Mensch Jens,
ihr habt alle Wünsche, da sollte man sich doch mal genauer mit VBA beschäftigen. Dann klappt es auch mit EXCEL Sonderwünschen. ;-)
So könnte es gehen, ALLES in das Codefenster der Tabelle.
Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public strLastCell As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If strLastCell <> "" Then
' Für Zelle A1, sonst anpassen.
If Range(strLastCell).Address = "$A$1" Then
If GetAsyncKeyState(&HD) = -32768 Then
MsgBox "Letzte Zelle = A1    ENTER    gedrückt !!! ", vbInformation
End If
End If
End If
strLastCell = Target.Address
End Sub

Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: ... ist viel besser als OnKey - *staun*
04.11.2005 08:46:54
Erich
AW: Aktion bei Drücken der Eingabetaste in Zelle
04.11.2005 11:05:59
Jens
Hallo Heiko!
Vielen Dank - funktioniert prächtig!
...wie soll man als VBA-Laie schon auf die GetAsyncKeyState-Funktion kommen...? ;-)
LG,
Jens

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Aktion bei Drücken der Eingabetaste in Excel-Zelle


Schritt-für-Schritt-Anleitung

Um eine bestimmte Aktion auszuführen, wenn du die Eingabetaste in einer bestimmten Zelle drückst, kannst du den folgenden VBA-Code verwenden:

  1. Öffne Excel und klicke mit der rechten Maustaste auf den Reiter des Tabellenblatts, in dem du die Aktion festlegen möchtest.

  2. Wähle „Code anzeigen“ aus dem Kontextmenü.

  3. Füge den folgenden Code in das sich öffnende Fenster ein:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If GetAsyncKeyState(&H0D) = -32768 Then ' 0D ist der ASCII-Code für die Eingabetaste
           If Target.Address = "$A$1" Then ' Hier die gewünschte Zelle anpassen
               MsgBox "Die Eingabetaste wurde gedrückt!", vbInformation
           End If
       End If
    End Sub
  4. Schließe den VBA-Editor und teste den Code, indem du in die Zelle A1 wechselst und die Eingabetaste drückst.


Häufige Fehler und Lösungen

  • Der Code funktioniert nicht.

    • Stelle sicher, dass du den Code im korrekten Tabellenblatt-Modul (nicht im allgemeinen Modul) eingefügt hast.
  • Die Eingabetaste reagiert nicht.

    • Überprüfe, ob die Zelle, die du getestet hast, korrekt angegeben ist (z.B. $A$1).
  • Die Aktion wird nicht ausgelöst, wenn die Zelle leer ist.

    • Der Code ist so konzipiert, dass er unabhängig von Änderungen in der Zelle funktioniert. Achte darauf, dass der Code in der richtigen Subroutine steht.

Alternative Methoden

Eine alternative Methode, um auf die Eingabetaste in Excel zu reagieren, ist die Verwendung der Application.OnKey Methode. Hier ist ein Beispiel:

Application.OnKey "~", "DeineAktion" ' Für die Eingabetaste

Mit dieser Methode kannst du eine benutzerdefinierte Funktion (DeineAktion) aufrufen, wenn die Eingabetaste gedrückt wird. Beachte, dass dies global für die gesamte Excel-Anwendung gilt.


Praktische Beispiele

  • Beispiel 1: Eine einfache Nachricht anzeigen, wenn die Eingabetaste in Zelle B2 gedrückt wird.

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If GetAsyncKeyState(&H0D) = -32768 Then
           If Target.Address = "$B$2" Then
               MsgBox "Du hast die Eingabetaste in B2 gedrückt!", vbInformation
           End If
       End If
    End Sub
  • Beispiel 2: Eine Aktion ausführen, wenn in Zelle C3 etwas eingegeben wird und die Eingabetaste gedrückt wird.

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Address = "$C$3" Then
           MsgBox "In C3 wurde etwas eingegeben und die Eingabetaste gedrückt!", vbInformation
       End If
    End Sub

Tipps für Profis

  • Nutze die GetAsyncKeyState Funktion für mehr Flexibilität, um auf verschiedene Tastenanschläge zu reagieren.
  • Experimentiere mit verschiedenen Zelladressen, um die Funktionalität an deine Bedürfnisse anzupassen.
  • Halte deine Makros und VBA-Codes gut dokumentiert, um die Verwaltung zu erleichtern.

FAQ: Häufige Fragen

1. Was ist die Eingabetaste? Die Eingabetaste (oder Enter-Taste) ist eine Taste auf der Tastatur, die häufig verwendet wird, um Eingaben zu bestätigen oder eine neue Zeile zu beginnen.

2. Welches ist die Eingabetaste bei Excel? Die Eingabetaste ist die Taste mit der Beschriftung „Enter“ oder „Eingabe“, und in Excel wird sie verwendet, um Daten in Zellen einzugeben oder zu bestätigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige