Vba 当另一个单元格发生更改时,清除该单元格的内容-对于多个单元格
我一直在寻找答案,但找不到任何适合我需要的东西。我正在创建一个包含多行的工作表,这些行需要具有相同的功能。例如,在第2行中,我需要D2:F2的内容来清除B2中的值是否更改 我发现一个VBA代码非常适合这个实例。但是,在第6行、第10行、第14行等中,我也需要相同的功能—每第4行,直到总共第118-30行 每一行都必须是独占的。如果我更改B2中的值,我不希望它清除其他行中的值-仅第2行。如果我改变B6中的值,我只想改变第6行中的值…依此类推 这是我用于B2的代码,但我不确定是否可以修改更多行,或者是否需要完全不同的代码Vba 当另一个单元格发生更改时,清除该单元格的内容-对于多个单元格,vba,excel,Vba,Excel,我一直在寻找答案,但找不到任何适合我需要的东西。我正在创建一个包含多行的工作表,这些行需要具有相同的功能。例如,在第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
overIf Target.Row@BruceWayne这取决于,如果你想看看它清除的速度有多快,比我的少1行,你首先检查它是否超出范围。但是,这真的不明显