我会先说这个编程不是我的强项,但我会感激任何帮助。
当单元格D(在同一行上)的值发生变化时,我使用了以下公式来尝试清除单元格AQ的内容。目前,当单元格D中的值变为1时,内容仅在AQ中被清除(可能是由于“如果目标= 1然后”行。我使用什么代替“1”以便所有更改,从任何值到任何值,将启动单元格AQ的ClearContents指令?
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D7:D506")) Is Nothing Then
If Target = 1 Then
Range("AQ" & Target.Row).ClearContents
End If
End If
End Sub
嗨,斯科特,我只是想出来了。我应该在一小时前查看你的回复!回答你的问题:当一个人从网上的其他类似例子中抄袭所有人的代码时,问题就出现了。对于没有经验的人来说,简单的解决方案并不明显。虽然我有你,是否有我可以添加的代码,如果D的值更改为相同的值,将阻止AQ清除。(即D = 1,然后我再次输入D = 1)。目前,代码无法区分值的真实变化(即1到2)和仅重新输入相同的值(即1到1)。
—
MJS
有趣的问题。我的经验相当少
—
斯科特
Worksheet_Change
。我假设您已通过实验验证,Worksheet_Change
即使将单元格“更改”为其当前值,也会调用该例程?在那种情况下,我怀疑你运气不好(任何知道更好的人,随时纠正我!)。我可以建议的一件事是你保留Column的备份副本 D
,并将“new”值与你保存的副本进行比较。
谢谢@Christofer Weber。我的代码存在一些问题,但在此期间我在另一个论坛上收到了一个(看似可行的)解决方案,所以希望现在不需要这个。但是,谢谢你的时间和精力。
—
MJS
If Target = 1
?为什么不把它拿出去做If Not Intersect(Target, Range("D7:D506")) Is Nothing Then
......Range("AQ" & Target.Row).ClearContents
?