VBA设置工作表缩放级别

6

我有一个VBA代码,可以根据屏幕分辨率设置缩放级别。 但是它只在打开工作簿时对ActiveWindow有效。 如何将其应用到Excel中的所有工作表?

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

我会在工作簿上调用这个模块。
Private Sub Workbook_Open()
ScreenRes
End Sub

2
澄清一下,您想更改所有打开窗口的缩放级别,是吗? - fakedad
2个回答

10

2
可以避免使用 With-End WithWorksheets.Select/ActiveWindow.Zoom = 7 - user3598756
1
@Jeeped,抱歉,我没明白你的意思。你是想让我在我的代码中每个选择案例中添加你提供的代码吗? - Manu
@Manu,看看我的回答,帮助你不必等待Jeeped的觉醒。但是功劳归于Jeeped。 - user3598756
1
需要明确的是,对于所有答案,这需要工作表可见。 - QHarr

5

在 @Jeeped 的回答基础上,您可以在 ThisWorkbook 代码窗格中放置以下代码:

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

很好(且合适)地使用函数返回一个数字以用于缩放命令,而不是试图在函数内部更改缩放级别。 - user4039065
@Jeeped,谢谢。我同意你的评论。顺便问一下,那边现在几点了? - user3598756
目前为UTC-0700。 - user4039065
@user3598756 和大家,你们让我感到非常开心!谢谢你们的帮助。 - Manu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接