steige von Office 2003 auf 2013 64 bit um.
Bei folgender Zeile kommt ein Fehler, wie muss die Zeile bei 64 bit Excel lauten?
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
LG Sabbel
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare PtrSafe Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Öffne den Visual Basic for Applications (VBA) Editor:
ALT + F11
, um den Editor zu öffnen.Füge ein neues Modul hinzu:
Einfügen
und wähle Modul
.Deklariere die Funktion für 64-Bit Excel:
GetAsyncKeyState
korrekt zu deklarieren:
Private Declare PtrSafe Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Verwenden der Funktion:
Fehler: "Typ nicht definiert":
PtrSafe
in der Deklaration verwendest, um Kompatibilität mit 64-Bit Excel herzustellen.Fehler: "Ungültige Deklaration":
Lib "user32"
korrekt geschrieben sein.Wenn du keine 64-Bit Version von Excel hast oder Probleme mit der Deklaration hast, kannst du auch auf andere Funktionen zurückgreifen:
Verwendung von GetKeyState
:
Private Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Diese Funktion kann auch verwendet werden, um den Zustand einer bestimmten Taste zu ermitteln.
Nutzung von GetKeyboardState
:
Private Declare PtrSafe Function GetKeyboardState Lib "user32" (lpKeyState As Byte) As Long
Diese Funktion gibt den Zustand aller Tasten zurück.
Hier ist ein einfaches Beispiel, wie du die Funktion GetAsyncKeyState
in einer Schleife verwenden kannst, um zu prüfen, ob eine bestimmte Taste gedrückt wird:
Sub CheckKeyPress()
Dim keyState As Integer
Dim vKey As Long
vKey = 65 ' ASCII für 'A'
' Schleife zur Überprüfung des Tastenzustands
Do
keyState = GetAsyncKeyState(vKey)
If keyState <> 0 Then
MsgBox "Taste A wurde gedrückt!"
Exit Do
End If
DoEvents
Loop
End Sub
Verwende Public Declare
für mehrere Module: Wenn du die Funktion in mehreren Modulen verwenden möchtest, kannst du die Deklaration als Public
anlegen.
Achte auf die 64-Bit Kompatibilität: Stelle sicher, dass du PtrSafe
verwendest, wenn du Funktionen aus der user32
-Bibliothek in einem 64-Bit Excel-Projekt deklarierst.
Fehlerbehebung: Wenn du beim Deklarieren von Funktionen auf Fehler stößt, überprüfe immer die Versionskompatibilität und die Syntax.
1. Warum muss ich PtrSafe
in meiner Deklaration verwenden?
PtrSafe
ist notwendig, um sicherzustellen, dass der Code sowohl in 32-Bit als auch in 64-Bit Excel funktioniert.
2. Was ist der Unterschied zwischen GetAsyncKeyState
und GetKeyState
?
GetAsyncKeyState
gibt den Zustand einer Taste zurück, während GetKeyState
den Zustand einer Taste bei der letzten Tasteneingabe zurückgibt.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen