2016-07-07 6 views
0

Я использую этот текущий код для обновления фильтра сводной таблицы на основе значения ячейки (E1) на одном листе. То, что я хотел бы сделать, - это обновить фильтр на основе ячейки в листе с именем summary. Если я установил подачу в текущем поданном равном ячейке в сводке, мне нужно нажать f2 и ввести иначе, это не сработает. Я уверен, что немного подстройки, и мой код может сработать.VBA Pivot Table One Cell Reference Различный лист

Любые советы?

Private Sub Worksheet_Change(ByVal Target As Range) 
Set Target = Range("E1") 
If Target Is Nothing Then Exit Sub 
On Error Resume Next 
Application.EnableEvents = False 
Sheets("Tech Pivot Table").PivotTables("PivotTable2").PivotCache.Refresh 
With Me.PivotTables("PivotTable2") 
    .PivotCache.Refresh 
    .PivotFields("Name").CurrentPage = Target.Value 
End With 
Application.EnableEvents = True 





    End Sub 
+0

FYI, используя 'On Error Resume Next' (если для ** _ очень _ ** конкретной цели, которые вы знаете, будет иногда терпеть неудачу, но быть обработаны соответствующим образом) не является лучшей практикой, так как она скрывает ошибки, которые могли бы важно видеть, что очень сложно отлаживать код – RGA

ответ

0

Я думаю, проблема в том, что вы изменяете значение целевой переменной перед началом, когда вы должны проверять, есть ли Target = "E1". Попробуйте код ниже и сообщите мне, если он будет работать.

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target = Range("E1") Then 
     If Target Is Nothing Then Exit Sub 
     On Error Resume Next 
     Application.EnableEvents = False 
     Sheets("Tech Pivot Table").PivotTables("PivotTable2").PivotCache.Refresh 
     With Me.PivotTables("PivotTable2") 
      .PivotCache.Refresh 
      .PivotFields("Name").CurrentPage = Target.Value 
     End With 
     Application.EnableEvents = True 
    End If 
End Sub 
+0

Привет, Филипп, этот код работает так же, как и мой предыдущий. Проблема в том, что я пытаюсь связать ячейку E1 с другим листом. Идеальная ситуация заключается в том, чтобы обновить имя в резюме, а затем оно автоматически обновит фильтр сводной таблицы в техническом сводном листе таблицы – Matty

+0

, но когда я разрешу E1 = summary! E1, единственный способ получить сводку для обновления - нажать F2 и Enter. Поэтому я бы хотел этого избежать. – Matty