auf meinem Rechner habe ich die Office 2019 32 Bit.
Kann ich mit meinem Rechner überprüfen ob die VBA Code für Excel auch auf einer niedrigeren 64 Bit Version von Office laufen?
Wenn ja dann bitte wie.
Gruß Wolfi
If VBA.LCase(Left(.Cells(z, 1).Text, Len(TextBox1))) = VBA.LCase(TextBox1) Then
Da konnte die Funktion LCase nicht gefunden werden. Durch das ersetzten durch VBA.LCase ging es dann wieder. Hat das auch etwas mit der Bit Version zu tun?Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function ShellExecuteA Lib "Shell32.dll" ( _
ByVal hwnd As LongPtr, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
Überprüfen der Excel-Version:
VBA-Editor öffnen:
ALT + F11, um den VBA-Editor zu öffnen.Überprüfen der Deklarationen:
PtrSafe verwendest. Beispiel:
Private Declare PtrSafe Function Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) As LongFehlerhafte Verweise prüfen:
Bitcode testen:
#If Win64 für bedingte Kompilierung, um sicherzustellen, dass der Code auch auf 64-Bit-Versionen läuft.Excel Fehler beim Kompilieren 64-Bit:
Private Declare-Deklarationen das PtrSafe-Schlüsselwort enthalten.LCase nicht gefunden:
VBA.LCase verwendest und einen Fehler erhältst, könnte dies an einem fehlerhaften Verweis liegen. Überprüfe die Verweise im VBA-Editor.Absturz von Excel:
LongPtr anstelle von Long.VBA #If Win64:
#If Win64 verwenden, um Code für 64-Bit spezifisch zu machen. Beispiel:
#If Win64 Then
' 64-Bit spezifischer Code hier
#Else
' 32-Bit spezifischer Code hier
#End IfVerwendung von Debugging:
Beispiel 1: Sleep-Funktion:
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub TestSleep()
Sleep 1000 ' Pausiert den Code für 1 Sekunde
End Sub
Beispiel 2: FindWindow-Funktion:
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As LongPtr
Beispiel 3: ShellExecuteA-Funktion:
Private Declare PtrSafe Function ShellExecuteA Lib "Shell32.dll" ( _
ByVal hwnd As LongPtr, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As LongPtr
Verwende LongPtr für Handles: Bei der Arbeit mit Windows-API-Funktionen, die Handles verwenden, solltest Du immer LongPtr anstelle von Long verwenden, um sicherzustellen, dass Dein Code sowohl auf 32-Bit- als auch auf 64-Bit-Versionen funktioniert.
Dokumentation: Halte Dich an die offizielle Microsoft-Dokumentation für VBA und die API-Funktionen, um die korrekten Deklarationen und Datentypen zu verwenden.
Regelmäßiges Testen: Teste Deinen Code regelmäßig in beiden Umgebungen, um sicherzustellen, dass alles korrekt funktioniert.
1. Kann ich meinen 32-Bit Code einfach auf 64-Bit umstellen?
Ja, aber Du musst sicherstellen, dass Du PtrSafe in Deine Deklarationen einfügst und die richtigen Datentypen verwendest.
2. Was tun, wenn ich einen Fehler beim Kompilieren erhalte?
Überprüfe Deine Deklarationen auf das Vorhandensein von PtrSafe und stelle sicher, dass alle verwendeten Verweise im VBA-Editor korrekt sind.
3. Wie teste ich meinen Code auf 64-Bit?
Du kannst #If Win64 verwenden, um spezifische 64-Bit-Tests durchzuführen. Alternativ solltest Du den Code auf einem 64-Bit-PC testen oder in einer virtuellen Maschine eine 64-Bit-Umgebung einrichten.