2017-03-16 11 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,它已完美運作 –