[英]Automatically Hide/Unhide Column's based on value in row that is formula transposed from another worksheet
Gday全部
我面临一个问题,需要您的帮助。 请耐心等待,因为我是VBA编码的新手,正在研究它。
我遇到了一个复杂的问题,部分得到了帮助,但是有了这些帮助,我才发现了更多问题。
在单个工作表“ Accounts List
, B2:B45
中的值由数据验证列表单独确定,选项为“是”或“否”。 是或否的答案会自动转换为B4:AS4
的第二个电子表格,即Quarter 1
。 请注意,这是通过公式=transpose()
而不是VBA来=transpose()
。
我需要宏来识别Quarter 1
B4:AS4
中的所有更新,并隐藏不为Yes范围内的任何/所有列。
我正在使用的当前代码是:
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
,半降低动态功能,但我很乐意牺牲。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.