在循环中更新表时VBA数据透视表错误

我有一个问题在Excel文件中执行1个数据透视表的循环:我只想将model2IJ更改为CV

 For i = 7 To 11 ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("MODEL2").CurrentPage _ = "(All)" With ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("MODEL2") .PivotItems("CV").Visible = False .PivotItems("IJ").Visible = True .PivotItems("(blank)").Visible = False End With cel4 = "AV" & i cel3 = "AX" & i Worksheets("DDTZ C").Range("AZ" & i).Formula = "=Iferror(IF(" & cel4 & "="""","""",VLookup(" & cel3 & ", AT:AV, 3, False)),"""")" ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("MODEL2").CurrentPage _ = "(All)" With ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("MODEL2") .PivotItems("CV").Visible = True .PivotItems("IJ").Visible = False .PivotItems("(blank)").Visible = False End With Worksheets("DDTZ C").Range("BA" & i).Value = "=Iferror(IF(" & cel4 & "="""","""",VLookup(" & cel3 & ", AT:AV, 3, False)),"""")" Next i 

这个循环在第一个循环中完美运行,但是,当它开始第二个循环时, i = 8 ,出现一个错误,我检查了脚本,问题与后面的部分有关:

  ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("MODEL2").CurrentPage _ = "(All)" With ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("MODEL2") .PivotItems("CV").Visible = False .PivotItems("IJ").Visible = True .PivotItems("(blank)").Visible = False End With 

我不明白为什么我有这个问题,因为它在第一个循环i = 7上工作正常

任何人可以帮助解决这个问题? 提前致谢

尝试下面的代码。

:我只debuggingPivotTable部分,而不是公式。

 Dim PvtTbl As PivotTable ' set the Pivot Table into a variable Set PvtTbl = ActiveSheet.PivotTables("Tabela dinâmica1") Dim i As Long For i = 7 To 11 With PvtTbl With .PivotFields("MODEL2") .ClearAllFilters .PivotItems("CV").Visible = False .PivotItems("(blank)").Visible = False End With cel4 = "AV" & i cel3 = "AX" & i ' === Not debugging your formula part === Worksheets("DDTZ C").Range("AZ" & i).Formula = "=Iferror(IF(" & cel4 & "="""","""",VLookup(" & cel3 & ", AT:AV, 3, False)),"""")" With .PivotFields("MODEL2") .ClearAllFilters .PivotItems("IJ").Visible = False .PivotItems("(blank)").Visible = False End With ' === Not debugging your formula part === Worksheets("DDTZ C").Range("BA" & i).Value = "=Iferror(IF(" & cel4 & "="""","""",VLookup(" & cel3 & ", AT:AV, 3, False)),"""")" End With Next i