我一直在追逐我的尾巴数周,更多的时间"谷歌搜索我想承认。
我在Excel 2016电子表格中有一个庞大而复杂的分析应用程序,它可以捕获SQL表数据,查询电子邮件数据并执行很多我觉得很酷的东西。用户可以查看销售人员自动化绩效指标和图表一切都很好,除了一件事。我无法阻止"保存数据?"无论我做什么,对话框都会出现。
作为一种解决方法,我已将电子表格放在网络上,并为用户提供运行VBscript的快捷方式,以将此电子表格复制到本地PC上的隐藏驱动器并运行它。因此,如果他们保存它,就不用担心,因为他们没有使用原始数据。但正如人们容易想象的那样,加载时间必然比需要的时间长,当我告诉用户他们无法保存数据时,用户会被消息搞糊涂。
很多不同的实验,我似乎发现了Excel中的一个错误(是的,我知道,这对我来说听起来很蹩脚)因为我无法使Application.DisplayAlerts = False。它不会采取。
见图: enter image description here
当我运行应用程序时,上面的图像(或上面的链接,因为我还没有提交足够的问题来嵌入图像)显然是从立即窗口中获取的。我按照显示的确切顺序进入了步骤。请注意,我设置了Application.DisplayAlerts = False,然后在词之后立即检查了值,它是真的。
非常奇怪。这是一个错误吗?
最后一个可能无关紧要;我使用.XLSB格式是因为占用空间更小,加载时间更短,并且可以解决宏的PC设置问题。但是我已经切换回.XLSX来简化实验。
答案 0 :(得分:1)
澄清一下:代码在调试器中的每一步之后暂时停止,导致Excel在空闲时将其设置回 True 。以下是验证此行为的方法:
暂时在例程中的某处插入以下代码:
Debug.Print“......”
Application.DisplayAlerts = False
Debug.Print“Application.DisplayAlerts:”& Application.DisplayAlerts
停止
使用“设置下一个语句”工具(或Ctrl-F9),将 Debug.Print“...”语句设置为下一个一个要执行。
您应该会在立即窗口中看到此内容:
...
Application.DisplayAlerts:False
现在,在停止语句处停止代码后,在立即窗口中键入“?Application.DisplayAlerts”,然后按[Enter]键。你会得到:
?Application.DisplayAlerts
真
因为Excel在代码暂停时已将其重置为 True 。
删除实验代码。