3

是否可以根据屏幕分辨率设置缩放级别Select

我遵循了代码:

Sheets(1).Range("A1:AC1").Select
ActiveWindow.Zoom = True

取自https://stackoverflow.com/a/19439177/1903793

所需的代码将类似于:

Range("A1:AC1").Width.Zoom=True

更新。为什么我要避免选择?

  1. 我的工作表具有基于用户设置的隐藏列。因此,A1:AC1 范围内的某些列被隐藏了。我无法选择单列,因为此特定列可能被隐藏。
  2. 选择触发事件。当然,我可以禁用这些事件,但禁用这些事件有一些我想避免的副作用。
4

4 回答 4

2

这行得通,但不会让你开心。

由于我们希望AC列 (即第 29 列)可见,因此我们从Zoom= 100 开始并一次减少一步,直到 29+1 列VisibleRange

Sub ShrinkWindow()
    Dim i As Long, r As Range

    For i = 100 To 1 Step -1
        ActiveWindow.Zoom = i
        Set r = ActiveWindow.VisibleRange
        If r.Columns.Count = 29 + 1 Then Exit Sub
    Next i
End Sub
于 2016-09-05T14:03:45.673 回答
2

只需测量当前窗口宽度和范围的宽度。然后您可以使用这些值来设置缩放比例。注意 - 这需要一些额外的验证和错误处理,但它应该给出基本的想法。

Private Sub ZoomToRange(target As Range)
    'Get the window from the target range.
    Dim wnd As Window
    Set wnd = ActiveWindow

    'Find out what you need to scale to.
    Dim scaling As Long
    scaling = 100 * wnd.Width / target.Width
    'Limit to max and min zoom level.

    If scaling > 400 Then
        wnd.Zoom = 400
    ElseIf scaling < 10 Then
        wnd.Zoom = 10
    Else
        wnd.Zoom = scaling
    End If
    'Scroll to the upper left cell
    target.Cells(1, 1).Activate
End Sub
于 2016-09-05T14:08:16.743 回答
0

通过创建所选单元格的更大图像(如 1.5 倍)或增加字体大小可以轻松完成缩放:

在此处输入图像描述

在此处输入图像描述

查看此示例:缩放选定的单元格

于 2021-07-25T19:27:27.123 回答
-1

这就是我的结局。解决方案对隐藏列具有抵抗力。我不选择列,而是选择形状。添加一个矩形,将其命名为“BoxForZoom”。它应该足够宽以供您缩放。然后应用以下代码:

Sheet1.Shapes("BoxForZoom").Visible = True
Sheet1.Shapes("BoxForZoom").Select
ActiveWindow.Zoom = True
Sheet1.Shapes("BoxForZoom").Visible = False
于 2016-10-12T20:00:24.907 回答