Изменить событие, не вызывая макрос Excel Vba - PullRequest
0 голосов
/ 16 мая 2018

У меня есть диапазон значений в столбце, на который я нацеливаюсь.
Как только любое из значений в этом диапазоне изменяется, он должен вызывать макрос. Макрос, который я вызываю, работает, но мое событие изменения не распознается. Что-то не так с моим кодом?

Мой макрос четных изменений находится на листе, где происходит событие изменения:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$H$5:$H$32" Then
        Call SetAxes
    End If
End Sub

Нужно ли быть более точным с адресом диапазона?

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

в качестве обходного пути вы можете добавить функцию:

Function FakeChange() As Integer
SetAxes
FakeChange = 0
End Function

и добавить за своими формулами в «$ H $ 5: $ H $ 32» + Fakechange (), например: = 'ваша формула' + FakeChange()

Эта функция будет срабатывать при изменении результатов ваших формул

0 голосов
/ 17 мая 2018

Target.Address = "$H$5:$H$32" будет иметь значение «Истина» только в том случае, если весь этот диапазон изменяется сразу.

Чтобы перехватить изменения в одной или нескольких ячейках в этом диапазоне, используйте Application.Intersect , например:

If Not Application.Intersect(Target, Range("$H$5:$H$32")) Is Nothing Then
0 голосов
/ 17 мая 2018

Я просто использовал worksheet_calculate и вызывал функцию, когда что-либо меняется на рабочем листе.
Все, что он вызывает, - это устанавливает оси, поэтому я не против, если он будет выполняться повторно.

Private Sub Worksheet_Calculate()

        Call SetAxes

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