2015-04-21 4 views
0

Я хочу проверить значение Colum A и Column 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

EDIT обновленный код, который должен работать.

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

Смежные вопросы