Thema Datum  Von Nutzer Rating
Antwort
31.07.2025 17:11:24 Coraline
NotSolved
31.07.2025 19:53:59 Gast46309
NotSolved
Rot Anpassung eines Makros von 32-Bite auf 64-Bit
02.08.2025 18:13:58 Gast67998
NotSolved

Ansicht des Beitrags:
Von:
Gast67998
Datum:
02.08.2025 18:13:58
Views:
18
Rating: Antwort:
  Ja
Thema:
Anpassung eines Makros von 32-Bite auf 64-Bit

Anmerkung:

Sowohl xIndex als auch der Funktionsrückgabewert sind per Definition vom Typ int (damit kein Zeiger). Dadurch ändert sich nichts in der 64bit Variante.


 Ungetestet 

#If VBA7 Then ' Office mit VBA7 und damit flexiblen 32/64bit Support
    Private Declare PtrSafe Function GetSystemMetrics Lib "User32" (ByVal xIndex As Long) As Long
#Else  ' älteres Office; nur 32bit
    Private Declare Function GetSystemMetrics Lib "User32" (ByVal xIndex As Long) As Long
#End If

Private Const SM_CXSCREEN As Long = 0& ' Screen Witdh [Pixels]
Private Const SM_CYSCREEN As Long = 1& ' Screen Height [Pixels]

Private Sub Application_Startup()
	
    ' ...
	Dim xWidth As Long
	Dim xHeight As Long
	
	xWidth = GetSystemMetrics(SM_CXSCREEN)
	xHeight = GetSystemMetrics(SM_CYSCREEN)
	
	On Error Resume Next
	
	' ...
	
End Sub

Public Sub ExplorerDisplay(Exp As Explorer, ByVal L As Long)
	' ...
End Sub

Alles weitere bleibt so wie es bereits ist.

Hinweise:

In deinem Code war xWidth und xHeight als Integer (16bit) deklariert. -> Das ist falsch!
Wie du bei GetSystemMetrics sehen kannst muss es Long (32bit) sein.

GetSystemMetrics gibt Breite und Höhe in Pixel zurück.
Der Outlook Explorer und seine Properties Explorer.LeftExplorer.TopExplorer.Width und Explorer.Height erwarten laut Dokumentation ebenfalls Werte in der Einheit Pixel; deshalb muss man hier nichts umrechnen. Das ist jedoch nicht immer so - deshalb immer die Dokumentation lesen!

Daraus folgt auch, dass der Parameter L bei ExplorerDisplay ebenfalls Long sein muss.

 

Grüße

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
31.07.2025 17:11:24 Coraline
NotSolved
31.07.2025 19:53:59 Gast46309
NotSolved
Rot Anpassung eines Makros von 32-Bite auf 64-Bit
02.08.2025 18:13:58 Gast67998
NotSolved