2017-03-16 26 views
0

我有一个问题,对Excel文件进​​行一个循环1的数据透视表: 我只是想从IJmodel2更改为CVVBA数据透视表误差在一个循环更新表时

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 C注意明白为什么我有问题,因为它在第一个循环上工作正常i = 7

任何人都可以帮助解决这个问题? 在此先感谢

+0

@YowE3K你在服用吗?我可以放弃睡觉吗? –

+1

@ShaiRado Nah - 我只是编辑了[宏]标签 - 数据透视表不是我的东西,所以我宁愿你回答 - 喝更多的咖啡 - 保持清醒一点点 – YowE3K

回答

2

请试试下面的代码。

注意:我只调试了PivotTable部分,而不是公式。

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 
+0

非常感谢你@Shai Rado,它已完美运作 –