如果单元格A为空,则清除列B的单元格 – RANGE

有一个问题,并寻求一些build议。 我一直在Excel中使用下面的代码一段时间,如果单元格A为空,它将清除B列的内容。 它的工作很好,但我现在需要它来工作一个特定的范围(A6:B35)。 有任何想法吗?

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Column = 1 Then If Target.Validation.Type = 3 Then Application.EnableEvents = False Target.Offset(0, 1).ClearContents End If End If exitHandler: Application.EnableEvents = True Exit Sub End Sub 

您需要testing活动单元格(目标)是否落入范围A6:A35。 喜欢这个:

 Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If not intersect(target, range("A6:A35")) is nothing then If Target.Validation.Type = 3 Then Application.EnableEvents = False Target.Offset(0, 1).ClearContents Application.EnableEvents = True End If End if exitHandler: End Sub 

你也应该缩进你的代码,使其更具可读性。 这将有助于循环和IF语句。

就像是

 Private Sub Worksheet_Change(ByVal Target As Range) Dim rng1 As Range Dim rng2 As Range Set rng1 = Intersect(Target, Range("A6:B35")) If rng1 Is Nothing Then Exit Sub Application.EnableEvents = False For Each rng2 In rng1 If rng2.Validation.Type = 3 Then rng2.Offset(0, 1).ClearContents Next Application.EnableEvents = True End Sub