2015-04-21 63 views
0

我想检查Colum A和E列值,然后根据这些值折叠数据透视表。使用excel隐藏数据透视表项目VBA

myfile.Sheets(3).Select 
Dim dd As Range 
Dim ee As Range 
Dim ff As String 
    For Each ee In myfile.Sheets(3).Range("E1:E20000") 
    For Each dd In myfile.Sheets(3).Range("A1:A20000") 
     With ee 
      If Left(dd.Value, 1) = "F" And ee.Value = "0.00" Or ee.Value = "(0.00)" Then ff = Left(dd.Value, 10) 
      ActiveSheet.PivotTables(1).PivotFields("Ref 1").PivotItems(ff).ShowDetail = False 
     End With 
    Next 
    Next 

我认为这是错误出现的地方。特别是用变量ff。

ActiveSheet.PivotTables(1).PivotFields("Ref 1").PivotItems(ff).ShowDetail = False 

回答

0

试着把你的字符串放在引号中。所以就像

ActiveSheet.PivotTables(1).PivotFields("Ref 1").PivotItems(""" & ff & """).ShowDetail = False 

此外,如果FF没有得到设置,它仍然试图崩溃的关键。所以试着把它放在一个if语句中,所以if FF <> "" then .....showdetails = false

编辑更新的代码应该工作。

myFile.Sheets(3).Select 
Dim i As Long 
Dim ff As String 

For i = 5 To 5000 
    If Left(ActiveSheet.Range("A" & i).Value, 1) = "F" And ActiveSheet.Range("E" & i).Value = "0" Then 
     ff = Left(ActiveSheet.Range("A" & i).Value, 10) 
     If ff <> "" Then 
      For j = 1 To ActiveSheet.PivotTables("PivotTable1").PivotFields("Ref 1").PivotItems.Count 
       If ActiveSheet.PivotTables("PivotTable1").PivotFields("Ref 1").PivotItems(j).Name = ff Then 
        ActiveSheet.PivotTables("PivotTable1").PivotFields("Ref 1").PivotItems(j).ShowDetail = False 
       End If 
      Next 
     End If 

    End If 
Next i 

pivotItems正在查找索引。所以我通过了所有这些来看看FF是否与他们的名字匹配。如果它确实会隐藏细节。

让我知道这是否工作。

+0

嗨伙计我试试这个,但仍然不工作。 – Isu

+0

我尝试这个,但仍然无法正常工作。我认为还有另一个问题与选择范围有关。我只想比较同一行。线A5和E5不是每个组合。 – Isu

+0

我用下面的代码更新我的编码,现在没有错误,但没有任何反应。 – Isu

相关问题