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

Forumthread: Vba code auf 64 Bit testen

Vba code auf 64 Bit testen
20.12.2020 09:22:07
wolfi
Hallo,
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
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vba code auf 64 Bit testen
20.12.2020 10:05:31
Hajo_Zi
Hallo Wolfi,
Du verwendest in Deinem Code nicht
Private Declare ...
damit läuft es auch unter 64-bit.

AW: Vba code auf 64 Bit testen
20.12.2020 11:56:11
wolfi
Hallo,
vielen Dank.
Hilft es immer die Private Declare mit "PtrSafe" zu erweitern (Hab ich hier im Forum gelesen) oder was muss anstatt der Private Declare benutzt werden.
Zum anderen hatte ich Probleme mit
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?
Gruß Wolfi
Anzeige
AW: Vba code auf 64 Bit testen
20.12.2020 12:00:52
Nepumuk
Hallo Wolfi,
nein, das liegt an einem fehlerhaften Verweis. Schau mal im VBA-Editor - Menüleiste - Extras - Verweise. Da steht bei mindesten einen "Nicht gefunden" wähle diese(n) ab.
Gruß
Nepumuk
AW: Vba code auf 64 Bit testen
20.12.2020 13:05:32
wolfi
Hallo,
Vielen Dank,
jetzt geht es wieder mit "LCase"
Hat dazu auch noch jemand eine Idee?
Hilft es die Private Declare mit "PtrSafe" zu erweitern (Hab ich hier im Forum gelesen) oder was muss anstatt der Private Declare benutzt werden.
Gruß Wolfi
Anzeige
AW: Vba code auf 64 Bit testen
20.12.2020 13:11:23
Nepumuk
Hallo Wolfi,
es genügt nicht einfach nur PtrSafe in die Deklarationen einzusetzen. Es gibt andere Variablentypen und geändert Strukturen die berücksichtigt werden müssen. Wenn du das nicht beachtest stürzt dir Excel ab.
Gruß
Nepumuk
AW: Vba code auf 64 Bit testen
20.12.2020 13:23:05
wolfi
Vielen Dank für eure Hilfe, es hat hat mir sehr geholfen.
Anzeige
AW: Vba code auf 64 Bit testen
20.12.2020 13:09:34
volti
Hallo Wolfi,
ergänzend zu den bereits gemachten Aussagen hier noch bzgl. Deiner Frage
Hilft es immer die Private Declare mit "PtrSafe" zu erweitern (Hab ich hier im Forum gelesen) oder was muss anstatt der Private Declare benutzt werden.
Die Declares (müssen auch nicht unbedingt Private sein, es geht auch Public oder ohne, das hängt von der Verwendung ab) müssen unter 64-Bit das Schlüsselwort PtfSafe enthalten.
Darüber hinaus sind je nach Funktion noch Anpassungen diverser Variablen, inbesondere die sogenannten Handle, vorzunehmen.
Beispiel1 (hier muss nichts weitergemacht werden):
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Beispiel 2 (hier muss z.B. die Rückgabe der Function auf LongPtr umgestellt werden)
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" ( _
        ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr

Beispiel 3 (hier muss z.B. die Variable hWnd und die Rückgabe der Function auf LongPtr umgestellt werden)
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
_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA Code auf 64 Bit testen


Schritt-für-Schritt-Anleitung

  1. Überprüfen der Excel-Version:

    • Stelle sicher, welche Version von Excel Du verwendest. Klicke auf „Datei“ > „Konto“ > „Über Excel“, um die Version zu überprüfen.
  2. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Überprüfen der Deklarationen:

    • Achte darauf, dass Du beim Deklarieren von Funktionen das Schlüsselwort PtrSafe verwendest. Beispiel:
      Private Declare PtrSafe Function Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) As Long
  4. Fehlerhafte Verweise prüfen:

    • Gehe zu „Extras“ > „Verweise“ und stelle sicher, dass keine „Nicht gefunden“ Verweise vorhanden sind. Deaktiviere diese gegebenenfalls.
  5. Bitcode testen:

    • Teste den Code zunächst in Deiner 32-Bit-Version. Verwende #If Win64 für bedingte Kompilierung, um sicherzustellen, dass der Code auch auf 64-Bit-Versionen läuft.

Häufige Fehler und Lösungen

  • Excel Fehler beim Kompilieren 64-Bit:

    • Dies kann oft auf nicht kompatiblen Code zurückzuführen sein. Stelle sicher, dass alle Private Declare-Deklarationen das PtrSafe-Schlüsselwort enthalten.
  • LCase nicht gefunden:

    • Wenn Du 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:

    • Wenn Excel abstürzt, könnte es daran liegen, dass Du nicht die richtigen Datentypen für 64-Bit verwendest. Achte auf die Verwendung von LongPtr anstelle von Long.

Alternative Methoden

  • VBA #If Win64:

    • Du kannst #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 If
  • Verwendung von Debugging:

    • Nutze die Debugging-Tools im VBA-Editor, um Fehler zu identifizieren und zu beheben. Verwende Breakpoints und den Debugger, um den Code Schritt für Schritt zu testen.

Praktische Beispiele

  • 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

Tipps für Profis

  • 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.


FAQ: Häufige Fragen

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.

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