Excel宏不会在单元格更改时触发

时间:2019-06-03 10:26:52

标签: excel vba

我有一个宏,该宏先前是在单元格更改时触发的,但由于某种原因,现在它无法触发。我不知道是什么原因引起的。宏只需要做的就是刷新4个枢轴,可以手动完成,没问题。

我尝试了设置宏以在单元格更改时触发的不同方法,但是它们都无法在单元格更改时触发。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim KeyCells As Range

    Set KeyCells = Range("V76:W76")

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

    Sheets("NATFLOW").PivotTables("PivotTableA2").PivotCache.Refresh
    Sheets("NATFLOW").PivotTables("PivotTableB2").PivotCache.Refresh

    Sheets("NATTABLE").PivotTables("PivotTableAlpha2").PivotCache.Refresh
    Sheets("NATTABLE").PivotTables("PivotTableBeta2").PivotCache.Refresh

    End If

End Sub

结果是什么也没有发生,包括没有错误消息。

2 个答案:

答案 0 :(得分:1)

如果什么也没发生,包括没有错误消息,则是由于此Application.Intersect(KeyCells, Range(Target.Address))等于nothing

尝试逐步运行并检查Application.Intersect(KeyCells, Range(Target.Address))的值

答案 1 :(得分:0)

尝试:

Option Explicit

'Method 1 - Specific sheet, specific objects
Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("V76:W76")) Is Nothing And Target.Count = 1 Then

        With Sheets("NATFLOW")

            .PivotTables("PivotTableA2").PivotCache.Refresh
            .PivotTables("PivotTableB2").PivotCache.Refresh

            .PivotTables("PivotTableAlpha2").PivotCache.Refresh
            .PivotTables("PivotTableBeta2").PivotCache.Refresh

        End With

    End If

End Sub

'Method 2 - Refresh everyting from this workbook
Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("V76:W76")) Is Nothing And Target.Count = 1 Then

        ThisWorkbook.RefreshAll

    End If

End Sub