VBA Изменение значения, чтобы вызвать макрос. игнорировать - PullRequest
0 голосов
/ 30 июня 2018

Hello Stack Overflow Community! Я главный нуб в скриптах VBA и думаю, что у меня простой вопрос? У меня есть простой код на рабочем листе, который вызывает функцию каждый раз, когда значение изменяется в определенной ячейке.

Проблема в том, что ячейка является выпадающим меню, и когда вы изменяете выбор раскрывающегося списка на то же значение, он все равно выполняет код ..

Чтобы было ясно, я хочу, чтобы код запускался при изменении раскрывающегося списка. Только не тогда, когда оно «меняется» на одно и то же значение. Вставить мой код ниже. Дайте мне знать, если вы можете помочь!


Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$W$21" Then
        Call Financing
    End If
End Sub

Я думал, может быть, добавить .ignore или что-то может быть?

1 Ответ

0 голосов
/ 30 июня 2018

Сохраните статическое значение предыдущего значения и сравните его перед запуском подпроцедуры Финансирование.

Private Sub Worksheet_Change(ByVal Target As Range)
    static oldW1  as variant
    If Target.Address = "$W$21" Then
        if target.value <> oldW1 then
            oldW1 = Target.value
            Call Financing
        end if
    End If
End Sub

Статические переменные «запоминаются» подпроцедурой или функцией, в которой они объявлены. Обычно oldW1 будет «забыт» (и уничтожен), когда Worksheet_Change будет завершен и завершен. Однако при статическом oldW1 во второй раз (и все последующие) вводится Worksheet_Change, он «запоминает», какое значение oldW1 было в последний раз, когда оно использовалось.

Это не означает, что статическая переменная общедоступна; он доступен только в функции или подпроцедуре, где он был объявлен.

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