我正在尝试创建一个宏,如果特定列中的单元格包含0值,则该宏会隐藏行。
我发现了另一个使用的论坛中的宏会隐藏行(下面),但它只会在第一次刷新数据时隐藏行。我在工作表顶部使用数据验证单元格,从另一个工作表中提取数据以填充参考数据(并且工作表的其余部分使用SUMIFS)。
当我的团队更新单元格以选择各种选项(例如:美国,亚洲,欧洲,全部)时,我需要再次运行宏来隐藏任何包含0值的单元格。我也不能有一个会破坏工作表中使用的SUMIFS公式的宏。
目前的公式我有:
Sub HideRows()
Application.ScreenUpdating = False
Application.Calculation = xlManual
For Each c In Range("E7:E153")
If c.Value = 0 Then Rows(c.Row).Hidden = True
Next
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub
我认为我需要的是在最后添加某种重新运行或循环线但不知道从哪里开始。任何帮助将不胜感激。
TYVM。
答案 0 :(得分:1)
您可以使用Worksheet_Change事件。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
Application.ScreenUpdating = False
Application.Calculation = xlManual
For Each c In Range("E7:E153")
If c.Value = 0 Then Rows(c.Row).Hidden = True Else Rows(c.Row).Hidden = False
Next
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End If
End Sub
答案 1 :(得分:0)
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "You just changed " & Target.Address
End Sub
借鉴 http://www.ozgrid.com/VBA/run-macros-change.htm
将target.Address引用到chages的特定单元格,然后调用HideRows
如果您需要先取消隐藏所有行,只需将此代码添加到您的程序中ActiveSheet.Cells.EntireRow.Hidden = False