清除Excel

时间:2018-05-31 01:43:59

标签: vba excel-vba excel-formula excel

请你帮我实现以下目标:

我的数据范围为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中任何单元格的行为。

请注意,我需要将宏应用于稍后在表格中插入的任何新行。

请告诉我,伙计们。

非常感谢

1 个答案:

答案 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