清除基于不同单元格的内容

时间:2018-05-04 12:49:23

标签: excel vba clear

我正在寻找一种方法来根据另一个单元格中的值清除某个单元格的内容:

Private Sub Worksheet_Change2(ByVal Target As Range)
     If Range("AL4").Value = 1 Then
        Range("AK15").Select
        Selection.ClearContents
     If Range("AL4").Value = 2 Then
        Range("AK15").Select
        Selection.ClearContents
End Sub

这有点不起作用,有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您的代码存在一些问题:

  • Worksheet_Change2是您的代码的名称,与Worksheet_Change无法使用
  • 您不使用Target来定义要检查更改的范围。 将If Range("AL4").Value = 1更改为:

    If not Intersect(Target, Range("AL4")) Is Nothing Then 
       If Range("AL4").Value = 1 or Range("AL4").Value = 2 Then
           Range("AK15") = ""
       End If
    End if
    

使用此检查进行更改,您可以在现有的Worksheet_Change模块中实现它,并且只在单元格AL4的值发生更改时才触发此模块。

如果您想了解工作表更改事件,建议您从ozgrid.com

阅读此页面

答案 1 :(得分:1)

您的代码中存在一些问题:

  • 方法名称中有2个不应该存在。在这种情况下,名称很重要
  • 您缺少两个End Ifs
  • 要避免级联事件,您需要在更改值之前禁用事件
  • 不要使用Select。它可以工作,但它会给你带来麻烦

总结为

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Range("AL4").Value = 1 Then
            Range("AK15").ClearContents
    End If
    If Range("AL4").Value = 2 Then
            Range("AK15").ClearContents
    End If
    Application.EnableEvents = True
End Sub

答案 2 :(得分:0)

艾拉 -

下面应该解决你想要实现的目标

If Range("AL4").Value = 1 Or 2 Then
    Range("AK15") = ""
End If

If Range("AL4").Value = 1 Or 2 Then
    Range("AK15").ClearContents
End If

您想尝试不使用SELECT功能,因为它会大大减慢处理速度