Excel 扩展数据验证框

Excel 扩展数据验证框,excel,vba,Excel,Vba,我在电子表格的顶行有几个数据验证下拉框。我使用下面的代码来扩展框的大小,以帮助用户在选择单元格时看到他们的选项。我在让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")

我在电子表格的顶行有几个数据验证下拉框。我使用下面的代码来扩展框的大小,以帮助用户在选择单元格时看到他们的选项。我在让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

如果我理解得很好,代码应该是:

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的控制应在之后进行。 另外,我更喜欢在返回时更改D:AP列的所有宽度。。。 我对代码有点小改动。。。添加检查是否隐藏,并使用line Application.ScreenUpdate,代码仅在末尾显示。
我还删除了一些不必要的代码,如果……

您的解决方案非常有效。我注意到的一件事是,以前隐藏的任何列都会被扩展。是否可以跳过隐藏列?您会创建一系列未隐藏的列,还是使用类似的方法:如果Target.Column>4,列0,那么??