我有一个vba宏,可以从电子表格中导入数据,并使用数据库中的数据填充名为“Validation”的工作表。我正在尝试设置工作表更改事件,当在工作表中更改数据时,它将使用新值更新数据库。
目前这是有效的,但我遇到的问题是,当我最初从数据库中获取该工作表的数据时,工作表更改事件将被触发,从而导致错误。
填充表单时是否有任何方法可以停止更改,甚至只有在工作表中实际手动更改某些内容时才会停止更改?
很抱歉,如果我的解释不是很好的话。如果您需要更多信息,请询问。
答案 0 :(得分:1)
尝试
Application.EnableEvents =False
答案 1 :(得分:0)
在导入开始之前,请添加以下行:
Application.EnableEvents = False
并在此事件之后(如果出现错误!):
Application.EnableEvents = True
答案 2 :(得分:0)
您需要的代码是Application.EnableEvents = False
。这将阻止事件触发,直到代码遇到Application.EnableEvents = True
。
根据导入数据的方式,您可以在导入过程中设置开关,也可以创建一个手动运行的小宏。
另一种可能是使用Selection_Change事件。如果粘贴数据,这可能是可能的。在那种情况下,选择将包括许多细胞。当选择包含多个单元格时,您可能会关闭事件。
如果选择大于1个单元格,只需让Change事件跳过其功能,就可以在不关闭事件的情况下实现相同的想法。请记住,Change_Event会将ActiveCell视为其Target
。