автоматически выполните макрос Excel на изменении ячеек

Как я могу автоматически выполнить макрос Excel каждый раз значение в детали изменения ячеек?

Прямо сейчас мой рабочий код:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("H5")) Is Nothing Then Macro
End Sub

где "H5" конкретная контролируемая ячейка и Macro название макроса.

Существует ли лучший путь?

89
задан vba_user111 11 July 2019 в 14:11
поделиться

3 ответа

Ваш код выглядит довольно хорошим.

Быть осторожным, однако, для Вашего вызова к Range("H5") команда ярлыка к Application.Range("H5"), который эквивалентен Application.ActiveSheet.Range("H5"). Это могло быть прекрасным, если единственные изменения являются пользовательскими изменениями - который является самым типичным - но для значений ячеек рабочего листа возможно измениться, когда это не активный лист через программируемые изменения, например, VBA.

Принимая это во внимание, я использовал бы Target.Worksheet.Range("H5"):

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Target.Worksheet.Range("H5")) Is Nothing Then Macro
End Sub

Или можно использовать Me.Range("H5"), если обработчик событий находится на кодовой странице для рассматриваемого рабочего листа (это обычно):

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("H5")) Is Nothing Then Macro
End Sub

Hope это помогает...

106
ответ дан Liam 24 November 2019 в 07:20
поделиться

Обработайте Worksheet_Change событие или Workbook_SheetChange событие.

обработчики событий берут аргумент "Цель В качестве Диапазона", таким образом, можно проверить, включает ли диапазон, который это изменяет, ячейку, Вы интересуетесь.

7
ответ дан Liam 24 November 2019 в 07:20
поделиться

Я предпочитаю этот путь, не используя ячейку, но диапазон

    Dim cell_to_test As Range, cells_changed As Range

    Set cells_changed = Target(1, 1)
    Set cell_to_test = Range( RANGE_OF_CELLS_TO_DETECT )

    If Not Intersect(cells_changed, cell_to_test) Is Nothing Then 
       Macro
    End If
3
ответ дан Javier Torón 24 November 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: