无法在Excel 2016 VBA中使Application.DisplayAlerts = False

时间:2016-08-01 21:31:48

标签: excel vba

我一直在追逐我的尾巴数周,更多的时间"谷歌搜索我想承认。

我在Excel 2016电子表格中有一个庞大而复杂的分析应用程序,它可以捕获SQL表数据,查询电子邮件数据并执行很多我觉得很酷的东西。用户可以查看销售人员自动化绩效指标和图表一切都很好,除了一件事。我无法阻止"保存数据?"无论我做什么,对话框都会出现。

作为一种解决方法,我已将电子表格放在网络上,并为用户提供运行VBscript的快捷方式,以将此电子表格复制到本地PC上的隐藏驱动器并运行它。因此,如果他们保存它,就不用担心,因为他们没有使用原始数据。但正如人们容易想象的那样,加载时间必然比需要的时间长,当我告诉用户他们无法保存数据时,用户会被消息搞糊涂。

很多不同的实验,我似乎发现了Excel中的一个错误(是的,我知道,这对我来说听起来很蹩脚)因为我无法使Application.DisplayAlerts = False。它不会采取。

见图: enter image description here

当我运行应用程序时,上面的图像(或上面的链接,因为我还没有提交足够的问题来嵌入图像)显然是从立即窗口中获取的。我按照显示的确切顺序进入了步骤。请注意,我设置了Application.DisplayAlerts = False,然后在词之后立即检查了值,它是真的。

非常奇怪。这是一个错误吗?

最后一个可能无关紧要;我使用.XLSB格式是因为占用空间更小,加载时间更短,并且可以解决宏的PC设置问题。但是我已经切换回.XLSX来简化实验。

1 个答案:

答案 0 :(得分:1)

澄清一下:代码在调试器中的每一步之后暂时停止,导致Excel在空闲时将其设置回 True 。以下是验证此行为的方法:

  1. 在VBE代码开发窗口中,打开立即窗口(Ctrl-G)。
  2. 暂时在例程中的某处插入以下代码:

    Debug.Print“......”

    Application.DisplayAlerts = False

    Debug.Print“Application.DisplayAlerts:”& Application.DisplayAlerts

    停止

  3. 使用“设置下一个语句”工具(或Ctrl-F9),将 Debug.Print“...”语句设置为下一个一个要执行。

  4. 按F5(继续)运行代码表单。
  5. 您应该会在立即窗口中看到此内容:

    ...

    Application.DisplayAlerts:False

  6. 现在,在停止语句处停止代码后,在立即窗口中键入“?Application.DisplayAlerts”,然后按[Enter]键。你会得到:

    ?Application.DisplayAlerts

    因为Excel在代码暂停时已将其重置为 True

  7. 删除实验代码。