访问数据库时停止工作表更改事件触发

时间:2018-01-12 10:40:53

标签: excel vba excel-vba

我有一个vba宏,可以从电子表格中导入数据,并使用数据库中的数据填充名为“Validation”的工作表。我正在尝试设置工作表更改事件,当在工作表中更改数据时,它将使用新值更新数据库。

目前这是有效的,但我遇到的问题是,当我最初从数据库中获取该工作表的数据时,工作表更改事件将被触发,从而导致错误。

填充表单时是否有任何方法可以停止更改,甚至只有在工作表中实际手动更改某些内容时才会停止更改?

很抱歉,如果我的解释不是很好的话。如果您需要更多信息,请询问。

3 个答案:

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