Vba 当另一个单元格发生更改时,清除该单元格的内容-对于多个单元格

Vba 当另一个单元格发生更改时,清除该单元格的内容-对于多个单元格,vba,excel,Vba,Excel,我一直在寻找答案,但找不到任何适合我需要的东西。我正在创建一个包含多行的工作表,这些行需要具有相同的功能。例如,在第2行中,我需要D2:F2的内容来清除B2中的值是否更改 我发现一个VBA代码非常适合这个实例。但是,在第6行、第10行、第14行等中,我也需要相同的功能—每第4行,直到总共第118-30行 每一行都必须是独占的。如果我更改B2中的值,我不希望它清除其他行中的值-仅第2行。如果我改变B6中的值,我只想改变第6行中的值…依此类推 这是我用于B2的代码,但我不确定是否可以修改更多行,或者

我一直在寻找答案,但找不到任何适合我需要的东西。我正在创建一个包含多行的工作表,这些行需要具有相同的功能。例如,在第2行中,我需要D2:F2的内容来清除B2中的值是否更改

我发现一个VBA代码非常适合这个实例。但是,在第6行、第10行、第14行等中,我也需要相同的功能—每第4行,直到总共第118-30行

每一行都必须是独占的。如果我更改B2中的值,我不希望它清除其他行中的值-仅第2行。如果我改变B6中的值,我只想改变第6行中的值…依此类推

这是我用于B2的代码,但我不确定是否可以修改更多行,或者是否需要完全不同的代码

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B2")) Is Nothing Then
        Range("D2:F2").ClearContents
    End If
End Sub

请告知-谢谢

您可以使用
MOD

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 118 Then Exit Sub
    If Target.Row Mod 4 = 2 And Not Intersect(Target, Cells(Target.Row, 2)) Is Nothing Then
        Range("D" & Target.Row & ":F" & Target.Row).ClearContents
    End If
End Sub

首先将
目标行
限制在2和118之间

其次,使用
Mod
仅检查第4行

请尝试以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Row >= 2 And Target.Row <= 118 Then
    If (Target.Row + 2) Mod 4 = 0 Then
        If Target.Column = 2 Then
            Target.Offset(, 2).Resize(1, 3).ClearContents
        End If
    End If
End If

End Sub
Private子工作表\u更改(ByVal目标作为范围)

如果Target.Row>=2和Target.Row单元格中当前的内容
D2:F2
?请告诉我:)(@NicholasF.-如果我的或ShaiRado的解决方案对您有效,您可以从运行时的角度单击帖子左侧(向下箭头下方)的复选标记作为答案,知道它是否“更快”吗要执行
If Target.Row>118,然后退出Sub
over
If Target.Row@BruceWayne这取决于,如果你想看看它清除的速度有多快,比我的少1行,你首先检查它是否超出范围。但是,这真的不明显