Resolutie:
Code:
Dim Resolution As New Point(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)
Ik heb het nu met hele andere lange vage codes gedaan:
Private Sub UserForm_Initialize()
Dim SchermMaten As New CscreenRes ' Verwijzing naar klassemodule
Dim iControls As Integer ' cmAantal besturingselementen
On Error Resume Next
' Schermresolutie wordt weergegeven in pixels
' Moet vermenigvuldigd worden met 3/4 om de juiste maten te krijgen
Me.Width = SchermMaten.SchermBreedte * 3 / 4
Me.Height = SchermMaten.SchermHoogte * 3 / 4
' Besturingselementen worden allen aangepast aan de nieuwe schermresolutie.
' Vermits ze oorspronkelijk gemaakt zijn met een schermhoogte van 600 (800 x 600)
' wordt dit getal in de berekening opgenomen.
With Me
For iControls = 0 To .Controls.Count - 1
With .Controls(iControls)
.Top = .Top * SchermMaten.SchermHoogte / 1024
.Height = .Height * SchermMaten.SchermHoogte / 1024
.Left = .Left * SchermMaten.SchermBreedte / 1280
.Width = .Width * SchermMaten.SchermBreedte / 1280
.Font.Size = Int(.Font.Size * SchermMaten.SchermHoogte / 1024)
End With
Next
End With
End sub
Klassenmodules: CscreenRes
Option Explicit
' 32-bit API declaration
Private Declare Function GetSystemMetrics32 Lib "user32" _
Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
' 16-bit API declaration
Private Declare Function GetSystemMetrics16 Lib "user" _
Alias "GetSystemMetrics" (ByVal nIndex As Integer) As Integer
Const SM_CXSCREEN = 0
Const SM_CYSCREEN = 1
Property Get SchermBreedte()
Dim vidWidth As Integer
If Left(Application.Version, 1) = 5 Then
' 16-bit Excel
vidWidth = GetSystemMetrics16(SM_CXSCREEN)
Else
' 32-bit Excel
vidWidth = GetSystemMetrics32(SM_CXSCREEN)
End If
SchermBreedte = vidWidth
End Property
Property Get SchermHoogte()
Dim vidHeight As Integer
If Left(Application.Version, 1) = 5 Then
' 16-bit Excel
vidHeight = GetSystemMetrics16(SM_CYSCREEN) - 30
Else
' 32-bit Excel
vidHeight = GetSystemMetrics32(SM_CYSCREEN) - 30
End If
SchermHoogte = vidHeight
End Property
De -30 is zodat de taakbalk zichtbaar blijft.
Maar als ik terug kom op jou code... Waar moet ik die dan invullen?. want als ik hem in die userform zet of in workbook dan doet hij niets.
Zelfde geldt voor die vb6 code
mvg,
Tim