Gday全部
我面临一个需要您全力帮助的问题。请耐心等待,因为我是VBA编码的新手,正在研究它。
我遇到了一个复杂的问题,得到了部分帮助,但是借助我的帮助,我发现了更多问题。
在单个工作表Accounts List
中,B2:B45
中的值由数据验证列表单独确定,选项为yes或no。答案为是或否自动转换为第二电子表格,位于Quarter 1
处的B4:AS4
。请注意,这是通过公式=transpose()
而不是VBA进行转置的。
我需要宏来识别B4:AS4
中Quarter 1
中的所有更新,并隐藏“不是”范围内的任何/所有列。
我正在使用的当前代码是:
Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False
For Each cell In Range("B4:AS4")
Select Case cell.Value <> "Yes"
Case False
cell.EntireColumn.Hidden = False
Case True
cell.EntireColumn.Hidden = True
End Select
Next cell
Application.ScreenUpdating = True
End Sub
该代码确实起作用,并且达到了我需要的结果,但是,这使电子表格非常缓慢,因为每次我在电子表格Quarter 1
中输入数据或进行任何更改时,电子表格都会加载。我需要此代码既要瞬时又要不滞后,因为大量的源数据将手动输入。
我们非常感谢您提前提供的帮助!
更新:
由于困难,我很高兴单击Accounts list
上的“宏”按钮以刷新Quarter 1
,如有必要,请半降低动态功能,但我很乐意牺牲。
答案 0 :(得分:0)
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B4:AS4")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
For Each cell in Target.Cells
With cell
If .Value <> "Yes" Then
.EntireColumn.Hidden = True
Else
.EntireColumn.Hidden = False
End If
End With
Next cell
Application.EnableEvents = True
End Sub