我正在寻找一种方法来根据另一个单元格中的值清除某个单元格的内容:
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
这不知何故不起作用,有什么想法吗?
您的代码存在一些问题:
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 阅读此页面
代码中存在一些问题:
- 方法名称中有一个不应该存在的 2。在这种情况下,名称很重要
- 你错过了两个结束如果
- 为避免级联事件,您需要在更改值之前禁用事件
- 不要使用"选择"。它有效,但会给你带来麻烦
这总结为
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
Ella -
下面应该解决您要实现的目标
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 功能,因为它会大大减慢处理速度