请你帮我实现以下目标:
我的数据范围为A9:G15
,在A9:G9
包含标题的表格中设置。
我正在使用一个宏,一旦B10:G15
被清除或更改,就会清除$A$10
范围内相邻列的某些相邻单元格。但是,宏似乎只清除范围B10:G10
中的相邻单元格,而保留范围B11:B15
中的数据未清除。这是因为我没有清除A11:A15
中的单元格,因为我不希望用户在范围A11:A15
中输入数据。这是我正在使用的宏:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("$A10:A15")) Is Nothing Then
Target.Offset(0, 1).ClearContents
Target.Offset(0, 2).ClearContents
Target.Offset(0, 3).ClearContents
Target.Offset(0, 4).ClearContents
ElseIf Not Intersect(Target, Range("B10:B15")) Is Nothing Then
Target.Offset(0, 1).ClearContents
Target.Offset(0, 2).ClearContents
Target.Offset(0, 3).ClearContents
ElseIf Not Intersect(Target, Range("C10:C15")) Is Nothing Then
Target.Offset(0, 1).ClearContents
Target.Offset(0, 2).ClearContents
ElseIf Not Intersect(Target, Range("D10:D15")) Is Nothing Then
Target.Offset(0, 1).ClearContents
End If
End Sub
为了解决此问题,我在A11:A15
IF($A$10="","", $A$10)
的单元格中输入了此公式,并将A11:A15
的字体设置为灰色并且填充为灰色,这样用户就不会看到这些单元格中的重复,因此他们知道不应该在这些单元格中输入数据。
但是,上面使用的宏似乎无法识别A11:A15
中的“”(由公式返回)作为清除A11:A15
中任何单元格的行为。
请注意,我需要将宏应用于稍后在表格中插入的任何新行。
请告诉我,伙计们。
非常感谢
答案 0 :(得分:0)
"" 在Excel中不被视为 Nothing ,我认为这是问题所在。您可以尝试相应更改VBA中的IF
条件吗?
修改强>
您可以尝试更改以下部分
If Not Intersect(Target, Range("$A10:A15")) Is Nothing Then
Target.Offset(0, 1).ClearContents
Target.Offset(0, 2).ClearContents
Target.Offset(0, 3).ClearContents
Target.Offset(0, 4).ClearContents
到
If Range("$A10").Value = "" Then
For i = 0 To 5
For j = 1 To 5
Target.Offset(i, j).ClearContents
Next j
Next i