簡體   English   中英

數據更新時重新運行Excel宏

[英]Rerun Excel macro when data gets updated

我正在嘗試創建一個宏,如果特定列中的單元格包含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。

您可以使用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
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到要修改的特定單元格,然后將其稱為HideRows

如果您需要先取消隱藏所有行,只需將此代碼添加到過程ActiveSheet.Cells.EntireRow.Hidden = False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM