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

VBA 32 zu 64 bit

Forumthread: VBA 32 zu 64 bit

VBA 32 zu 64 bit
22.12.2022 15:36:28
Herbert
hallo zusammen möchte gerne mein VBA auf 64 bit umstellen bekomme es aber nicht so richtig gebacken
kann mir da jemand von euch helfen ?
vielen Dank
Option Explicit
Declare

Sub Sleep Lib "kernel32" (ByVal dwmilliseconds As LongPtr)
Public Sperre As Boolean

Sub Laufschrift_starten()
Dim Bereich As Range
Dim Wiederholungen As Integer
'Variable "Sperre" den boolschen Wert False zuweisen
Sperre = False
'Makro kann auch mit der Tastenkombination "Strg Untbr" gestoppt werden
Application.EnableCancelKey = xlErrorHandler
'Der Variablen "Bereich" den Bereich D12 zuweisen
Set Bereich = Range("O2")
'Bei Auftreten eines Fehlers zur Sprungmarke "errorhandler" springen
On Error GoTo errorhandler
'For/Next-Schleife zur Wiederholung der Anordnung des Textes in Zelle D12
For Wiederholungen = 100 To 5000
'Mit Variable "Sperre" wird das Makro gestoppt, wenn diese den boolschen Wert "True" hat
If Sperre = False Then
Bereich.Value = Right(Bereich.Value, Len(Bereich.Value) - 1) + _
Left(Bereich.Value, 1)
'Steuerung an das Betriebssystem zurückgeben
DoEvents
'Wartezeit von 100 Millisekunden
Sleep 1
Else
Exit Sub
End If
Next Wiederholungen
errorhandler:
End Sub

Sub Laufschrift_stoppen()
'Variable "Sperre" den boolschen Wert True zuweisen um das Makro _
"Laufschrift_starten" zu stoppen
Sperre = True
End Sub
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA 32 zu 64 bit
22.12.2022 15:46:42
Mullit
Hallo,
probiers hiermit:
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Gruß, Mullit
AW: VBA 32 zu 64 bit
22.12.2022 16:00:28
Herbert
Dankeschön
werde es ausprobieren
Gruß
Anzeige
AW: VBA 32 zu 64 bit
22.12.2022 16:14:46
Mullit

Gruß, Mullit
AW: VBA 32 zu 64 bit
22.12.2022 16:42:11
Herbert_Grom
Hallo Mullit,
kann es sein, dass das "Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)" heißen muss?
Servus
AW: VBA 32 zu 64 bit
22.12.2022 17:33:51
mumpel
Nein, LongPtr braucht es nicht.
Anzeige
AW: VBA 32 zu 64 bit
22.12.2022 17:35:44
Herbert_Grom
Hallo René,
warum braucht man das in diesem Fall nicht?
Servus
AW: VBA 32 zu 64 bit
22.12.2022 17:38:12
mumpel
Das sind nur Sekunden. Dafür braucht es kein LongPtr. Das braucht man nur z.B. für Handle oder Pointer.
AW: VBA 32 zu 64 bit
22.12.2022 17:39:03
Herbert_Grom
Danke dir, wieder was gelernt!
Anzeige
AW: VBA 32 zu 64 bit
22.12.2022 16:57:19
snb
Warum reicht nicht ?

Sub M_snb()
c00 = Cells(2, 15)
n = Len(c00)
For j = 100 To 5000
Cells(2, 15) = Mid(c00 & c00, (j - 1) Mod n + 1, n)
Application.Wait DateAdd("s", 1, Now)
Next
End Sub

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA von 32 Bit auf 64 Bit umstellen


Schritt-für-Schritt-Anleitung

Um dein VBA von 32 Bit auf 64 Bit umzustellen, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Füge die Deklaration für die Sleep-Funktion hinzu:

    • Verwende die folgende Zeile, um die Sleep-Funktion aus der Kernel32-Bibliothek zu deklarieren:
      Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  3. Verwende LongPtr, wenn nötig:

    • In den meisten Fällen benötigst du LongPtr nicht für einfache Zeitverzögerungen. Für die Sleep-Funktion reicht Long aus.
  4. Aktualisiere bestehende Makros:

    • Überprüfe alle Makros in deinem Projekt, um sicherzustellen, dass sie mit der 64-Bit-Version von VBA kompatibel sind.
  5. Testen:

    • Führe die Makros aus, um sicherzustellen, dass keine Fehler, wie beispielsweise "Excel Fehler beim Kompilieren 64-bit", auftreten.

Häufige Fehler und Lösungen

  • Fehler: "Excel Fehler beim kompilieren 64-bit":

    • Stelle sicher, dass alle Deklarationen PtrSafe enthalten, wenn du auf 64 Bit umstellst.
  • Fehler bei der Sleep-Funktion:

    • Vergewissere dich, dass du die richtige Deklaration verwendest:
      Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  • Makro funktioniert nicht nach der Umstellung:

    • Überprüfe alle Variablen und deren Typen, um sicherzustellen, dass sie für 64 Bit korrekt deklariert sind.

Alternative Methoden

Wenn du die Sleep-Funktion nicht verwenden möchtest, kannst du folgende Alternativen in Excel VBA nutzen:

  1. Application.Wait:

    Application.Wait (Now + TimeValue("0:00:01")) ' Wartet 1 Sekunde
  2. Application.OnTime: Diese Methode kann verwendet werden, um eine Prozedur zu einem späteren Zeitpunkt auszuführen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das die Sleep-Funktion in einem VBA-Makro verwendet:

Sub BeispielSleep()
    Dim i As Integer
    For i = 1 To 5
        Debug.Print "Zähler: " & i
        Sleep 1000 ' wartet 1 Sekunde zwischen den Ausgaben
    Next i
End Sub

Dieses Makro gibt die Zahlen 1 bis 5 in der Konsole aus und wartet jeweils 1 Sekunde zwischen den Ausgaben.


Tipps für Profis

  • Überprüfung der VBA-Version: Stelle sicher, dass du die richtige Version von Excel verwendest. In Office 2016 und späteren Versionen ist die Unterstützung für 64 Bit Standard.

  • Verwendung von LongPtr: Bei der Arbeit mit Zeigern oder Handles in 64-Bit-Anwendungen ist es wichtig, LongPtr zu verwenden, um Komplikationen zu vermeiden.

  • Regelmäßige Tests: Teste deine Makros regelmäßig, um sicherzustellen, dass die Umstellung auf 64 Bit keine unerwarteten Fehler verursacht.


FAQ: Häufige Fragen

1. Warum benötige ich PtrSafe?
PtrSafe ist notwendig, um sicherzustellen, dass dein Code sowohl in der 32-Bit- als auch in der 64-Bit-Version von VBA funktioniert.

2. Was ist der Unterschied zwischen Long und LongPtr?
Long ist ein 32-Bit-Datentyp, während LongPtr in 64-Bit-Anwendungen 64 Bit umfasst und für Zeiger oder Handles verwendet werden sollte.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige