Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1904to1908
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel 32 / 64- Bit

Excel 32 / 64- Bit
14.11.2022 08:27:27
Thomas
Hallo!
Habe folgendes Problem:
Ich soll eine Adressdatei erstellen, die mehrere Personen an verschiedenen Windows- und Excel- Versionen benützen.
Das Problem ist, daß einige mit der Maske (UserForm) wenig anfangen können, da ihre Bildschirmauflösung zu klein ist.
Nun habe ich Folgendes hier im forum gefunden, was auch sehr gut klappt:
Das gehört in das Initialize Ereignis deiner Userform
Option Explicit

Private Sub UserForm_Initialize()
Me.Width = ScreenResolution(1)
Me.Height = (ScreenResolution(1) / 4) * 3
End Sub
'Das gehört in ein normales Modul
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Public Enum ScreenArgs
HORIZONTAL
VERTIKAL
End Enum

Public Function ScreenResolution(HV As ScreenArgs) As Long
If HV = 0 Or HV = 1 Then ScreenResolution = GetSystemMetrics(HV)
End Function
Das Problem ist nur, daß die Funktion für die 32-Bit- Version geschrieben ist, was eben bei anderen Rechnern Fehler macht.
Ich habe es damit versucht, möchte Excel aber nicht:
#If VBA7 And Win64 Then
Public Declare PtrSafe Function GetSystemMetrics Lib "User32" (ByVal nIndex As LongLong) As LongLong
#Else
Public Declare Function GetSystemMetrics Lib "User32" (ByVal nIndex As Long) As Long
#End If
Public Enum ScreenArgs
Horizontal
VERTIKAL
End Enum

Public Function ScreenResolution(HV As ScreenArgs) As Long
If HV = 0 Or HV = 1 Then ScreenResolution = GetSystemMetrics(HV)
End Function
Wenn mir bitte jemand helfen könnte, wäre ich sehr dankbar!

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel 32 / 64- Bit
14.11.2022 10:38:12
volti
Hallo Thomas,
es genügt, wenn Du hier das Schlüsselwort PtrSafe einsetzt.
PS: Der Typ Longlong (ist für diese Funktion aber eh falsch) kann auch nur bei 64-Bit Office eingesetzt werden und wird in der Praxis auch nur für einige wenige API-Funktionen genutzt. Für 32-Bit Office müsste LongPtr genommen werden.
Code:


Private Declare PtrSafe Function GetSystemMetrics Lib "user32" ( _ ByVal nIndex As Long) As Long

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Excel 32 / 64- Bit
14.11.2022 11:02:30
Thomas
Es Funktioniert!!! Herzlichen Dank, Karl- Heinz!!!

61 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige