Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

GetKeyState Nummer für strg und v

Forumthread: GetKeyState Nummer für strg und v

GetKeyState Nummer für strg und v
alex
hi
ganz kurze frage. was ist die nummer für strg und v die ich bei getkeystate in die klammern einsetzen muß.
GetKeyState(?)
gruß
alex
Anzeige
AW: GetKeyState Nummer für strg und v
06.12.2009 20:17:39
Nepumuk
Hallo,
da musst du beie Tasten abfragen.
Gruß
Nepumuk
AW: GetKeyState Nummer für strg und v
06.12.2009 20:28:50
alex
ja aber ich brauche die nummern
ich wollts so abfragen
Sub test
If GetKeyState(?) And GetKeyState(?)  

AW: GetKeyState Nummer für strg und v
06.12.2009 21:06:57
alex
das hilft mir irgendwie nicht weiter. mal abgesehen das ich die googleeinträge schon kenne.
ich brauch eigentlich auch nur die 2 nummern für strg und für v.
von mir aus auch nur für v . damit wäre mir geholfen.
gruß
alex
AW: GetKeyState Nummer für strg und v
06.12.2009 20:58:03
Nepumuk
Hallo,
im Prinzip so:
If (GetAsyncKeyState(vbKeyControl) And &H8000) = &H8000 And _
    (GetAsyncKeyState(vbKeyV) And &H8000) = &H8000 Then

Ich frag mich nur, wie du das abfragen willst, denn wärend du die Tasten drückst, wirst du kaum ein Makro starten können. Wenn du Ctrl+V abfangen willst, dann musst du diese Tastenkombination per OnKey-Methode umleiten in eine eigene Prozedur.
Gruß
Nepumuk
Anzeige
AW: GetKeyState Nummer für strg und v
06.12.2009 21:09:15
alex
Danke nepumuk
ich wollte das eigentlich so machen:
Declare

Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Sub ausschneiden()
Selection.Copy
Do
If (GetAsyncKeyState(vbKeyControl) And &H8000) = &H8000 And _
(GetAsyncKeyState(vbKeyV) And &H8000) = &H8000 Then
Call inh_einfg
Exit Do
End If
Loop
Selection.ClearContents
End Sub

Anzeige
AW: GetKeyState Nummer für strg und v
06.12.2009 21:15:45
alex
hmm klappt leider nicht so wie ich mir das vorgestellt hatte^^....
Die Schleife lässt keine weiteren eingaben zu.
AW: GetKeyState Nummer für strg und v
06.12.2009 21:33:47
Nepumuk
Hi,
na sag ich doch. Also, schau dir die Hilfe zur OnKey-Methode an. Beispiel:
Application.OnKey "^v", "Deine_Prozedur"

Gruß
Nepumuk
Anzeige
die Reihenfolge ist auch wichtig.
07.12.2009 12:30:34
Tino
Hallo,
habe noch etwas gespielt,
die Reihenfolge ob Strg+v oder v+Strg gedrückt wird müsste man auch mit überwachen.
https://www.herber.de/bbs/user/66406.xls
Gruß Tino
Anzeige
AW: die Reihenfolge ist auch wichtig.
08.12.2009 16:24:13
alex
Hi Tino
Danke für deine Mühe,
aber eingentlich hatte ich einen Thread weiter unten im Forum in dem ich nur werte ausschneiden wollte. Dies wollte ich mit hilfe von getkeystate machen, hat aber nicht geklappt.
gruß
alex
;
Anzeige
Anzeige

Infobox / Tutorial

GetKeyState für Strg und V in Excel VBA


Schritt-für-Schritt-Anleitung

Um die Tasten Strg und V mit der Funktion GetKeyState in Excel VBA abzufragen, gehst du wie folgt vor:

  1. Deklariere die Funktion: Füge diese Funktion am Anfang deines Moduls ein.

    Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
  2. Verwende die Funktion: Um den Status der Tasten abzufragen, kannst du den folgenden VBA-Code nutzen:

    Sub CheckKeys()
       If (GetAsyncKeyState(vbKeyControl) And &H8000) = &H8000 And _
          (GetAsyncKeyState(vbKeyV) And &H8000) = &H8000 Then
           MsgBox "Strg + V wurde gedrückt!"
       End If
    End Sub
  3. Führe die Prozedur aus: Du kannst die Prozedur CheckKeys in einer Schleife oder einem Timer aufrufen, um die Tastenüberwachung durchzuführen.


Häufige Fehler und Lösungen

Fehler: Die Schleife blockiert Eingaben.
Wenn du eine Endlosschleife verwendest, kann das zu einer Blockierung der Benutzeroberfläche führen. Stattdessen nutze die OnKey-Methode:

Application.OnKey "^v", "Deine_Prozedur"

Fehler: Tasten werden nicht erkannt.
Stelle sicher, dass du die richtigen Tastencodes verwendest. Für Strg ist es vbKeyControl und für V ist es vbKeyV.


Alternative Methoden

Eine alternative Möglichkeit, Strg und V in Excel VBA zu überwachen, ist die Verwendung von GetAsyncKeyState. Diese Methode erlaubt es, den Status der Tasten auch während der Ausführung eines Makros zu prüfen.

Beispiel:

If (GetAsyncKeyState(vbKeyControl) And &H8000) = &H8000 Then
   ' Deine Logik hier
End If

Praktische Beispiele

Hier ist ein einfaches Beispiel, das Strg + V abfängt und eine Nachricht anzeigt, wenn die Kombination gedrückt wird:

Sub MonitorKeys()
    Do
        If (GetAsyncKeyState(vbKeyControl) And &H8000) = &H8000 And _
           (GetAsyncKeyState(vbKeyV) And &H8000) = &H8000 Then
            MsgBox "Strg + V erkannt!"
            Exit Do
        End If
        DoEvents ' Erlaube anderen Prozessen, zu laufen
    Loop
End Sub

Tipps für Profis

  • Verwende DoEvents: Wenn du eine Schleife verwendest, füge DoEvents ein, um sicherzustellen, dass Excel weiterhin reagiert.
  • OnKey-Methode: Wenn du eine Tastenkombination abfangen möchtest, ist die OnKey-Methode die beste Wahl, da sie eine einfache Möglichkeit bietet, benutzerdefinierte Prozeduren für bestimmte Tasteneingaben zu definieren.
  • Vermeide Endlosschleifen: Diese können Excel einfrieren, also sorge für eine Möglichkeit, die Schleife zu verlassen.

FAQ: Häufige Fragen

1. Wie finde ich die richtigen Keycodes für andere Tasten?
Du kannst eine Liste der Tastencodes in der VBA-Dokumentation finden oder online nach "VBA Key Codes" suchen.

2. Ist GetKeyState in allen Excel-Versionen verfügbar?
Ja, GetKeyState ist in allen Versionen von Excel VBA verfügbar, die die Windows API unterstützen.

3. Wie kann ich die Tastenüberwachung beenden?
Du kannst eine Bedingung in deiner Schleife einfügen, die das Programm beendet, wenn eine bestimmte Taste gedrückt wird, z.B. die Escape-Taste.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige