Макрос Excel не срабатывает при изменении ячейки - PullRequest
0 голосов
/ 03 июня 2019

У меня есть макрос, который раньше срабатывал при смене ячейки, но по какой-то причине теперь не срабатывает. Я не уверен, что изменилось, чтобы вызвать это. Все, что нужно сделать макросу, это обновить 4 точки, что можно сделать вручную, без проблем.

Я пробовал разные способы настройки макроса для запуска при изменении ячейки, однако все они не запускаются при изменении ячейки.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim KeyCells As Range

    Set KeyCells = Range("V76:W76")

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

    Sheets("NATFLOW").PivotTables("PivotTableA2").PivotCache.Refresh
    Sheets("NATFLOW").PivotTables("PivotTableB2").PivotCache.Refresh

    Sheets("NATTABLE").PivotTables("PivotTableAlpha2").PivotCache.Refresh
    Sheets("NATTABLE").PivotTables("PivotTableBeta2").PivotCache.Refresh

    End If

End Sub

В результате ничего не происходит, включая сообщения об ошибках.

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Если ничего не происходит, включая отсутствие сообщений об ошибках, значит, Application.Intersect(KeyCells, Range(Target.Address)) равно nothing.

Попробуйте запустить шаг за шагом и проверить, если значение Application.Intersect(KeyCells, Range(Target.Address))

0 голосов
/ 03 июня 2019

Попробуйте:

Option Explicit

'Method 1 - Specific sheet, specific objects
Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("V76:W76")) Is Nothing And Target.Count = 1 Then

        With Sheets("NATFLOW")

            .PivotTables("PivotTableA2").PivotCache.Refresh
            .PivotTables("PivotTableB2").PivotCache.Refresh

            .PivotTables("PivotTableAlpha2").PivotCache.Refresh
            .PivotTables("PivotTableBeta2").PivotCache.Refresh

        End With

    End If

End Sub

'Method 2 - Refresh everyting from this workbook
Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("V76:W76")) Is Nothing And Target.Count = 1 Then

        ThisWorkbook.RefreshAll

    End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...