Vba: как запустить макрос при изменении значения ячейки


Вы можете использовать следующий синтаксис в VBA для запуска макроса при изменении определенного значения ячейки:

 Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = " $A$1 " Then
        Call MultiplyMacro
    End If
End Sub

В этом конкретном примере макрос MultiplyMacro запускается при изменении значения ячейки A1 .

В следующем примере показано, как использовать этот синтаксис на практике.

Пример. Запуск макроса при изменении значения ячейки с помощью VBA.

Предположим, мы создаем следующий макрос под названием MultiplyMacro , который умножает значения в ячейках A1 и B1 и отображает результаты в ячейке C1 :

 SubMultiplyMacro ()
    Range(" C1 ") = Range(" A1 ") * Range(" B1 ")
End Sub

Например, предположим, что у нас есть значение 12 в ячейке A1 и значение 3 в ячейке B1 .

Если мы запустим этот макрос, то получим следующий результат:

Теперь предположим, что мы хотим автоматически запускать этот макрос при каждом изменении значения ячейки A1 .

Для этого мы можем щелкнуть правой кнопкой мыши имя листа и выбрать «Показать код» :

В появившемся окне редактирования кода вы можете вставить следующий код:

 Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = " $A$1 " Then
        Call MultiplyMacro
    End If
End Sub

На следующем снимке экрана показано, как это сделать на практике:

Затем мы можем закрыть редактор VB.

Теперь всякий раз, когда мы меняем значение в ячейке A1 , макрос MultiplyMacro автоматически запускается и выполняет умножение, используя новое значение в ячейке A1 .

Например, предположим, что мы изменяем значение ячейки A1 на 10 . Как только мы изменим значение и нажмем Enter , запустится макрос:

Макрос умножает 10 на 3 и отображает результат в ячейке C2 .

Примечание . Если вы хотите запускать макрос при изменении ячейки в определенном диапазоне, вы можете использовать следующий синтаксис:

 Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range(" A1:B1 ")) Is Nothing Then
        Call MultiplyMacro
    End If
End Sub

Это приведет к запуску макроса MultiplyMacro , если какая-либо ячейка в диапазоне A1:B1 изменится.

Дополнительные ресурсы

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

VBA: как посчитать количество листов в книге
VBA: как извлечь данные из другой книги
VBA: как добавить новые листы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *