запустить макрос для всего столбца - PullRequest
1 голос
/ 29 апреля 2020

работает над этим макросом в зависимом выпадающем меню

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$M$10" Then
        Range("O10").Value = "--select--"
    End If
End Sub

Мне нужно запустить этот макрос для всех ячеек в столбце. Он просто работает в первой ячейке

Кто-нибудь может мне помочь, пожалуйста? спасибо!

1 Ответ

0 голосов
/ 29 апреля 2020

Вам потребуется использовать Application.Intersect в сочетании с .Offset() вместо метода Target.Address.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim AffectedRange As Range
    Set AffectedRange = Application.Intersect(Target, Me.Range("B:B"))  'find all cells that were changed in column B

    If AffectedRange Is Nothing Then Exit Sub  'exit if nothing in column B was changed

    Application.EnableEvents = False  'make sure our value change doesn't trigger another Worksheet_Change event (endless loop)
    On Error GoTo ENABLE_EVENTS  'make sure events get enabled even if an error occurs

    Dim Cell As Range
    For Each Cell In AffectedRange.Cells  'loop through all changed cells in column B
        Cell.Offset(ColumnOffset:=1).Value = ""  'move from B one column to the right and reset value
    Next Cell

ENABLE_EVENTS: 'in case of error enable events and report the error
    Application.EnableEvents = True
    If Err.Number <> 0 Then
        Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext
    End If
End Sub

При этом будет наблюдаться столбец B и удаляться значение в C всякий раз, когда ячейка в Б был изменен.

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