试图让脚本不运行,如果一个单元格不是空白的
代码是相对简单的。 如果我点击L8:L98中的一个单元格,并且单元格是空白的,那么单元格中会放入“T”,其他相关单元格将被清空。
If Intersect(Target, Range("C7:C98")) Is Nothing And Not Intersect(Target, Range("L7:L98")) Is Nothing Then Application.EnableEvents = False With Intersect(Target, Range("L7:L98")) .Value = "T" .Offset(, 1).Resize(, Col).ClearContents End With
我的问题是,如果C列中的同一行上的单元格中有数据,我希望if语句返回false并跳过它。 我也尝试了Intersect(target.offset(, -9)...
和没有相交的代码,也没有为我工作。
由于VBA不会短路,因此最好将代码分解成两个IFtesting(所以第二个条件不是不必要地运行):
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("L7:L98")) Is Nothing Then If Len(Cells(Target.Row, "C")) = 0 Then Application.EnableEvents = False With Intersect(Target, Range("L7:L98")) .Value = "T" 'presume you set Col elswehere? .Offset(, 1).Resize(, Col).ClearContents End With Application.EnableEvents = True End If End If End Sub
相交testing你点击的单元格是否在范围内,除非你同时点击C中的单元格和L中的单元格,否则你永远不会满足If。
那么让我们来testing同一行的列C中的单元格是否为空。
If Range("C" & Target.Row)="" And Not Intersect(Target, Range("L7:L98")) Is Nothing Then Application.EnableEvents = False With Intersect(Target, Range("L7:L98")) .Value = "T" .Offset(, 1).Resize(, Col).ClearContents End With