2016-09-27 2 views
2

Ich habe einen VBA, der die Zoomstufe basierend auf der Bildschirmauflösung einstellt. Aber es funktioniert nur für ActiveWindow beim Öffnen der Arbeitsmappe. Wie kann ich dies über alle Arbeitsblätter in Excel hinzufügen?VBA zum Einstellen des Zoomlevels auf den Blättern

Declare Function GetSystemMetrics32 Lib "user32" _ 
    Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long 

Public Sub ScreenRes() 
    Dim lResWidth As Long 
    Dim lResHeight As Long 
    Dim sRes As String 

    lResWidth = GetSystemMetrics32(0) 
    lResHeight = GetSystemMetrics32(1) 
    sRes = lResWidth & "x" & lResHeight 
    Select Case sRes 
     Case Is = "800x600" 
      ActiveWindow.Zoom = 75 
     Case Is = "1024x768" 
      ActiveWindow.Zoom = 125 
     Case Else 
      ActiveWindow.Zoom = 100 
    End Select 
End Sub 

werde ich dieses Modul rufen die Arbeitsmappe

Private Sub Workbook_Open() 
ScreenRes 
End Sub 
+1

Um zu klären, wollen Sie die Zoomstufe für alle geöffneten Fenster zu ändern, richtig? – fakedad

Antwort

1

Gebäude auf @Jeeped beantworten, die Sie in Thisworkbook-Codebereich den folgenden Code platzieren können:

Declare Function GetSystemMetrics32 Lib "user32" _ 
    Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long 

Option Explicit 

Private Sub Workbook_Open() 
    With Worksheets 
     .Select 
     ActiveWindow.zoom = ScreenResToZoom 
    End With 
End Sub 

Public Function ScreenResToZoom() As Long 
    Select Case GetSystemMetrics32(0) & "x" & GetSystemMetrics32(1) 
     Case Is = "800x600" 
      ScreenResToZoom = 75 
     Case Is = "1024x768" 
      ScreenResToZoom = 125 
     Case Else 
      ScreenResToZoom = 100 
    End Select 
End Function 
+0

Nice (und ** ordnungsgemäße **) Verwendung einer Funktion, um eine Zahl im Zoom-Befehl zurückgeben, anstatt zu versuchen, die Zoomstufe innerhalb der Funktion selbst zu ändern. – Jeeped

+0

@Jeeped, danke. Ich stimme deinem Kommentar zu. BTW wie ist die Zeit da drüben? – user3598756

+0

Derzeit UTC-0700. – Jeeped

2

Wählen Sie alle der Worksheet Objects die Worksheets collection verwenden und die Application.ActiveWindow property werden alle auf sie zeigen.

With Worksheets 
    .Select 
    ActiveWindow.Zoom = 75 
End With 
+1

gut. Und das 'With'-' End With' könnte auch vermieden werden: 'Worksheets.Select' /' ActiveWindow.Zoom = 7' – user3598756

+1

@Jeeped, Tut mir leid, ich verstehe nicht, was Sie sagen. Soll ich den von Ihnen angegebenen Code in jedem ausgewählten Fall in meinem Code hinzufügen? – Manu

+0

@ user3598756. Wie soll ich Code hier hinzufügen/ändern? – Manu

Verwandte Themen