Excel VBA代码强制设定特定缩放级别

7

我在Excel中有一个经过验证的下拉列表,如果缩放比例小于100,则无法阅读。我在互联网上查找并发现我不能更改验证列表文本大小,因此我想强制设置缩放比例为100。

我有以下代码可以实现这一点

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveWindow.Zoom = 100
End Sub

这个方案适用于缩放比例小于100的用户,但是如果用户使用大于100的缩放比例,它会限制缩放比例为100。有没有办法解决这个问题,类似于一个If-Else语句。

如果缩放比例小于100,则缩放比例为100;如果缩放比例大于100,则不做任何操作。

谢谢。


你已经回答了自己的问题:“如果缩放比例小于100,则将缩放比例设置为100” 如果 ActiveWindow.Zoom < 100 Then ActiveWindow.Zoom = 100 - Jean-François Corbett
如果ActiveWindow.Zoom < 100,则ActiveWindow.Zoom = 100表示“否则不做任何事情”。 - Jean-François Corbett
然而,当我将缩放设置为115并单击单元格时,缩放自动更改为100。 - Ckeane
当用户离开数据验证单元格时,您是否希望它返回到之前的设置(例如90)? - brettdj
目前还没有。尽管列表的要求几乎每小时都在变化。但是,列表的可读性是一个普遍存在的问题。我很惊讶微软公司没有将验证列表的字体大小普遍设为可编辑。 - Ckeane
显示剩余2条评论
3个回答

13
If (ActiveWindow.Zoom < 100) Then

    ActiveWindow.Zoom = 100

End If

6
这是一个一行代码即可实现相同功能的方法:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  ActiveWindow.Zoom = Application.Max(ActiveWindow.Zoom, 100)
End Sub

0
为了解决返回到默认的前一个缩放级别(并防止不必要的缩放闪烁),我建议:
'Assumed default zoom level= 70
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Temp As Byte
Temp = 0
        If Not Intersect(Target, Range("G3:H9999")) Is Nothing Then
             If ActiveWindow.Zoom <= 70 Then ActiveWindow.Zoom = 100
             Temp = 1
        End If
        
        If Not Intersect(Target, Range("E2:E9999")) Is Nothing Then
                If ActiveWindow.Zoom <=70 Then ActiveWindow.Zoom = 100
               Temp = 1
        End If
        
       If Temp = 0 And ActiveWindow.Zoom = 100 Then ActiveWindow.Zoom = 70
End Sub

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