我有一个宏,该宏先前是在单元格更改时触发的,但由于某种原因,现在它无法触发。我不知道是什么原因引起的。宏只需要做的就是刷新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
结果是什么也没有发生,包括没有错误消息。
答案 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