Очистить содержимое ячеек в этой строке, когда ячейка в одной и той же строке изменится для применения к нескольким строкам - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть этот код

Private Sub Worksheet-Change(ByVal Target As Range)
     If Not Intersect(Target, Range(“M4”)) Is Nothing Then
           Range("N4:T4).ClearContents
     End If
End Sub

, который работает для 4-й строки. Когда я изменяю M4, он очищает N4 до T4

Мне нужен способ адаптировать этот код так, чтобы, если я изменяю значение M5 удаляет N5 до T5 и так далее для всех строк.

Можете ли вы помочь

Ответы [ 2 ]

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

Вам необходимо пересечь диапазон, который вы хотите наблюдать для изменений Me.Range("M4:M10") с Target, а затем использовать Range.Offset свойство и Range.Resize свойство для перемещения из измените ячейку 1 справа и измените ее размер до 7 столбцов, чтобы очистить содержимое.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim AffectedRange As Range
    Set AffectedRange = Intersect(Target, Me.Range("M4:M10")) 'range to observe

    If Not AffectedRange Is Nothing Then
        Dim Cell As Range
        For Each Cell In AffectedRange.Cells
            Cell.Offset(ColumnOffset:=1).Resize(ColumnSize:=7).ClearContents
            'or
            'Me.Range("N" & Cell.Row & ":T" & Cell.Row).ClearContents
        Next Cell
    End If
End Sub
0 голосов
/ 06 апреля 2020

Test Target, если он содержит ячейку в M, и использовать ее строку для очистки соответствующих ячеек

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cl as Range
    For Each cl In Intersect(Target, Me.Columns(13))
        If cl.Row >= 4 Then
            cl.EntireRow.Cells(1, 14).Resize(1, 7).ClearContents
        End If
    Next
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...