Мой код «Worksheet_SelectionChange» требует, чтобы я снова выбрал каждую ячейку перед обновлением сводных таблиц - PullRequest
0 голосов
/ 24 сентября 2018

Мой код «Worksheet_SelectionChange» (для управления полями сводной таблицы со значениями ячеек) требует, чтобы я снова выбрал каждую ячейку перед обновлением сводных таблиц (на отдельном листе).Есть ли способ обновить сводные таблицы, как только я введу значение в связанную ячейку?Мне нужно запустить другой код, чтобы выбрать все ячейки одну за другой, чтобы обновить сводные таблицы.Извиняюсь, если мой код не отформатирован должным образом.Я новичок в VBA и Stackoverflow.Я ценю любой совет.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.ScreenUpdating = False

Dim rngIndustry1 As Range
Dim rngIndustry2 As Range
Dim rngIndustry3 As Range
Dim rngIndustry4 As Range

Set rngIndustry1 = Me.Range("Industry1")
Set rngIndustry2 = Me.Range("Industry2")
Set rngIndustry3 = Me.Range("Industry3")
Set rngIndustry4 = Me.Range("Industry4")

' Industry 1
If Not Application.Intersect(Target, rngIndustry1) Is Nothing Then
        With Sheets("Pivots").PivotTables("pvtIndustry1").PivotFields("Industry")

        If Len(rngIndustry1.Value) > 0 Then .CurrentPage = rngIndustry1.Value
    End With '<this line changes
End If

' Industry 2
If Not Application.Intersect(Target, rngIndustry2) Is Nothing Then
    With Sheets("Pivots").PivotTables("pvtIndustry2").PivotFields("Industry")

        If Len(rngIndustry2.Value) > 0 Then .CurrentPage = rngIndustry2.Value
    End With
End If

' Industry 3
If Not Application.Intersect(Target, rngIndustry3) Is Nothing Then
    With Sheets("Pivots").PivotTables("pvtIndustry3").PivotFields("Industry")

        If Len(rngIndustry3.Value) > 0 Then .CurrentPage = rngIndustry3.Value
    End With
End If

' Industry 4
If Not Application.Intersect(Target, rngIndustry4) Is Nothing Then
    With Sheets("Pivots").PivotTables("pvtIndustry4").PivotFields("Industry")

        If Len(rngIndustry4.Value) > 0 Then .CurrentPage = rngIndustry4.Value
    End With
End If

End Sub

1 Ответ

0 голосов
/ 24 сентября 2018

Вместо Worksheet_SelectionChange() вы можете использовать Worksheet_Change() и Intersect(), чтобы проверить, какие ячейки изменены

...