With the macro below you can return the screen size with the function GetSystemMetrics32.
Declare Function GetSystemMetrics32 Lib "User32" _ Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long Sub DisplayMonitorInfo() Dim w As Long, h As Long w = GetSystemMetrics32(0) ' width in points h = GetSystemMetrics32(1) ' height in points MsgBox Format(w, "#,##0") & " x " & Format(h, "#,##0"), _ vbInformation, "Monitor Size (width x height)" End Sub
The applications/code on this site are distributed as is and without warranties or liability. In no event shall the owner of the copyrights, or the authors of the applications/code be liable for any loss of profit, any problems or any damage resulting from the use or evaluation of the applications/code.
Insert PtrSafe between Declare and Function, so Declare PtrSafe Function. This is necessary on 64 bit installation.
When I enter this code into a module, the following section appears red:
Declare Function GetSystemMetrics32 Lib "User32" _
Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
And if I try to run the DisplayMonitorInfo code then I get a message that says that the GetSystemMetrics32 function is not defined.
I have also gotten a message with this first block of code that says "The code in this project must be updated for us on 64-bit systems. Please review and update Declare statements and then mark them with the PtrSafe attribute."
I googled this and found this from microsoft: https://docs.microsoft.com/en-us/previous-versions/office/troubleshoot/office-developer/compile-error-editing-vba-macro
However, the resolution says "To resolve this issue, ignore the "Compile error" and run the VBA code in the 64-bit version of the Office 2010 program." But this doesn't make any sense to me. How can I ignore the compile error and run the code anyway? Also, I'm running Office 365, not Office 2010 - is it just asking me to run it in an older version (that wouldn't be helpful)?
Thanks for any help.
-Sean
This worked for making the window smaller but my combo boxes, buttons,....basically eveything on the form stayed the same size as before so its just cut off the features of my form. How do you get the boxes to scale down as well?
I am not an expert BUT
go to the ZOOM properties of your frame or form & adjust smaller,
good Luck
Worked just fine for me. Thanks for sharing
This function returns number of pixels, not number of points. For my screen, I need to multiply this value by .78 to get number of points. The .78 comes from measuring the actual height of the screen in inches. I am looking for a way to determine the value for any monitor so I can compute appropriate coordinates for generated form displays