• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Excel 2010 automatisch schermresolutie aan laten passen

Status
Niet open voor verdere reacties.

Logicgold

Gebruiker
Lid geworden
5 feb 2013
Berichten
46
Hallo :D,

Op dit moment ben ik een bestand aan het afronden waar veel gebruikers gebruik van gaan maken. Na een paar testen valt het op dat andere gebruikers andere beeldschermresoluties hanteren. Dat maakt het bestand minder gemakkelijk te gebruiken doordat de overzichtelijkheid een stuk monder wordt.
Nu is het mogelijk in de handleiding te vermelden een bepaalde resolutie te gebruiken. Echter ben ik bang dat veel dat niet zullen wijzigen. Wanneer ik een knop in het bestand bouw die de resolutie automatisch (via de macro) op de juiste zet zullen de gebruikers het wel doen. Daarom roep ik jullie hulp in.

Dus wie weet een macro om de resolutie automatisch bijvoorbeeld op'1400 bij 1050 pixels' te zetten. Het zou helemaal mooi zijn wanneer er ook een macro komt die de resolutie terug zet op de resolutie die de gebruiker had (een variabel).

Daarnaast heb ik behoefte aan een macro die de resolutie van de gebruiker weer terug kan zetten. Dus dan zou de macro moeten nagaan welke resolutie de gebruiken had en deze terug kunnen zetten wanneer de gebruiker dit wil.
Ik heb op internet onderstaande code gevonden, maar deze loopt vast, omdat ik office 2010 64bit gebruik.
Hopelijk gaat het lukken. Bedankt voor de hulp!


Staat in module1:

Code:
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type


[COLOR="#FF0000"]Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" _
(ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lptypDevMode As Any) As Boolean


Declare Function ChangeDisplaySettings Lib "user32" Alias _
"ChangeDisplaySettingsA" (lptypDevMode As Any, ByVal dwFlags As Long) As Long


Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, _
ByVal dwReserved As Long) As Long

Declare Function GetSystemMetrics Lib "user32.dll" (ByVal nIndex As Long) As Long[/COLOR]

'Oude waarde onthouden
Dim Xoud As Long
Dim Youd As Long

Sub ChangeScreen_Resolution(ScrWidth As Long, ScrHeight As Long)
Dim typDevM As typDevMODE
Dim lngResult As Long
Dim intAns As Integer
'Huidige grafische instellingen
lngResult = EnumDisplaySettings(0, 0, typDevM)


With typDevM
.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
.dmPelsWidth = ScrWidth 'ScreenWidth (640,800,1024, etc)
.dmPelsHeight = ScrHeight 'ScreenHeight (480,600,768, etc)
End With
' Change the display settings to the specified graphics mode.
lngResult = ChangeDisplaySettings(typDevM, CDS_TEST)

Select Case lngResult
Case DISP_CHANGE_RESTART
intAns = MsgBox("Computer moet worden heropgestart." & _
vbCrLf & vbCrLf & "Nu heropstarten?", _
vbYesNo + vbSystemModal, "Resolutie")
If intAns = vbYes Then Call ExitWindowsEx(EWX_REBOOT, 0)

Case DISP_CHANGE_SUCCESSFUL
Call ChangeDisplaySettings(typDevM, CDS_UPDATEREGISTRY)
Case Else
MsgBox "Deze resolutie wordt niet ondersteund door uw beeldscherm!", vbSystemModal, "Error"
End Select

End Sub


Sub GetScreenSize()
    Dim x As Long, y As Long
    Dim sYourMessage As String
    Dim iConfirm As Integer
    
    x = GetSystemMetrics(SM_CXSCREEN)
    y = GetSystemMetrics(SM_CYSCREEN)
    
    Xoud = x
    Youd = y
    If x <> 1400 And y <> 1050 Then
    sYourMessage = "Huidige resolutie: " & x & " x " & y & vbCrLf
    sYourMessage = sYourMessage & "Dit bestand wordt best bekeken met een resolutie van 1400x1050." & vbCrLf
    sYourMessage = sYourMessage & "Nu wijzigen?"
    iConfirm = MsgBox(sYourMessage, vbExclamation + vbYesNo, "Resolutie")
    If iConfirm = vbYes Then
    'Wijzigen resolutie
    ChangeScreen_Resolution 1400, 1050
    End If
    End If
End Sub

Sub Herstel()
    ChangeScreen_Resolution Xoud, Youd
End Sub


[B]Staat in ThisWorkbook:[/B]
            
Option Explicit
 
Private Sub Workbook_Deactivate()
 Call Herstel
End Sub

Private Sub Workbook_Open()
     
    Call GetScreenSize
   Application.WindowState = xlMaximized
     
End Sub

Deze foutmelding krijg ik;

Compileer fout Excel 64bit.JPG


Met vriendelijke groet, Louis
 
Laatst bewerkt door een moderator:
Goed geschreven software past zich aan aan de gebruiker en niet andersom. Persoonlijk zou ik software die spontaan mijn resolutie wijzigt gelijk in de prullenbak smijten. Los van het feit dat je rekening moet gaan houden met de diverse soorten beeldschermen en andere instellingen (font-size, etc..). LCD schermen zijn niet gemaakt om op een andere resolutie te werken dan de native. Met name tekst wordt hierdoor al snel onleesbaar/wazig. En wat als gebruikers meerdere programma's open hebben. Die krijgen dan last van jouw opgelegde resolutie.

Geloof me dat je meer problemen ervoor terugkrijgt dan dat je met je goedbedoelde oplossing oplost.
 
RogerS bedankt voor je mening. Dat zijn idd problemen waar ik even niet aan had gedacht:confused:.
Het is jammer maar hier zullen ze het maar mee moeten doen.
Gr. Louis
 
Dat maakt het bestand minder gemakkelijk te gebruiken doordat de overzichtelijkheid een stuk monder wordt.
Of het overzicht minder wordt zou ik aan de gebruiker overlaten. In jouw geval zou ik niet meer doen dan bij startup een melding geven als "De weergave kan beter zijn als u uw monitor anders instelt. Klik hier voor nadere instructies." Geef gebruikers de optie om het tonen van deze melding uit te schakelen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan