我在电子表格的顶行有几个数据验证下拉框。我在选择单元格时使用以下代码来扩展框大小(以帮助用户查看其选项)。我在使VBA脚本在将列返回到正常宽度时忽略列A:C时遇到问题。这些列应固定为20,其他列返回8.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Target, Range("D1:AP1")) Is Nothing And Target.Columns <> "A1:C1" Then
ActiveWindow.Zoom = 100
Target.Columns.ColumnWidth = 8
Else
ActiveWindow.Zoom = 120
Target.Columns.ColumnWidth = 30
End If
End Sub
答案 0 :(得分:0)
如果我理解得很好,代码应该是:
Application.ScreenUpdating = False
If Target.Cells.Count > 1 Then
Exit Sub
Application.ScreenUpdating = True
End If
Set xx = Application.Intersect(Target, Range("D1:AP1"))
If xx Is Nothing Then
ActiveWindow.Zoom = 100
For i = 4 To 42
If Columns(i).Hidden = False Then Columns(i).ColumnWidth = 8
Next
Else
ActiveWindow.Zoom = 120
Target.Columns.ColumnWidth = 30
End If
Application.ScreenUpdating = True
目标cor A列C:C的控制应在之后进行。
当我返回时,我更喜欢将列D:AP的所有宽度变为chaneg
我对代码进行了一些操作...添加检查是否为隐藏,并且使用 Application.ScreenUpdating 行,代码仅在结尾处显示。
我也删除了非必要的代码(如果......)。