我想隐藏G4:FC4范围内值为0的列 单元格的值可以为0(在这种情况下,列应隐藏)或1(在这种情况下,它们应可见)。值0或1是基于公式的,并且取决于单元格D2中的下拉输入值。 当我手动更改D2中的值时,宏可以正常工作,但是当我使用下拉框时却不能。请在下面找到我的代码。有什么建议吗?
非常感谢
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Dim c As Range
For Each c In Sheets("P_MM6").Range("G4:FC4").Cells
c.EntireColumn.Hidden = True
If c.Value = 1 Then
c.EntireColumn.Hidden = False
End If
Next c
End Sub
答案 0 :(得分:2)
手动更改与下拉菜单无关紧要,除非您的代码事件中的其他位置被禁用并且没有重新打开,或者计算设置为手动,因此不会更改公式值,因此,即使代码触发了,列值也不会改变。
也就是说,下面的代码将为您提供帮助,因为它不会尝试在每次 单元格更改时隐藏/取消隐藏,而仅在D2更改时才会隐藏/取消隐藏。
Private Sub Worksheet_Change(ByVal Target As Range)
If target.address = "$D$2" Then
Dim c As Range
For Each c In Sheets("P_MM6").Range("G4:FC4").Cells
c.EntireColumn.Hidden = c.Value = 0
Next c
End If
End Sub
还要确保将计算设置为自动,并且不要在代码中的某些位置将其关闭,并且也不要将事件禁用,也不要在代码中的其他位置将其重新打开。
如果所有操作都无济于事,请在代码的Worksheet_Change
行上放置一个断点,然后通过下拉菜单更改单元格,然后看看会发生什么。