【问题标题】:ScreenUpdating does not allow to close workbooksScreenUpdating 不允许关闭工作簿
【发布时间】:2020-05-29 11:05:45
【问题描述】:

我在关闭宏中的工作簿时遇到了一些问题。我想通过以下方式加速我的宏:

Application.ScreenUpdating = False
'my code
Application.ScreenUpdating = True

但是当它完成时,我一直在使用的所有工作簿突然一起打开。我想关闭它们,所以我添加 * Workbooks.Close * 行。不幸的是,当 VBA 到达此代码行时出现错误。这是因为 excel“看不到”我的工作簿。当我关闭错误窗口并尝试再次运行关闭行时,一切正常,因为工作簿有足够的时间打开。可能excel需要一些时间来更新和打开所有工作簿,所以我应该推迟我的代码。我试过 * Application.Wait * 和 * Do Until loop *,但它没有用。我也尝试在屏幕更新之前关闭这些工作簿,但 excel 只是忽略了这些行。

我最后的代码行:

Application.ScreenUpdating = True

Application.DisplayAlerts = False

Workbooks(wb_1).Close
Workbooks(wb_2).Close

Application.DisplayAlerts = True

提前感谢您的帮助!

【问题讨论】:

  • 在尝试关闭工作簿时是否填充了 wb_1wb_2?还是他们失去了价值?如果您使用Workbooks(wb_1).Close False 将关闭而不保存或要求保存工作簿,如果您想保存更改,请更改为True

标签: excel vba


【解决方案1】:

正如达米安所说, 尝试添加:

Workbooks(wb_1).Close savechanges:=false
Workbooks(wb_2).Close savechanges:=false

如果需要,则为真

【讨论】:

  • 达米安,康拉德 感谢您的回答。但是它仍然不起作用。我认为我不必更改关闭工作簿的行中的任何内容,但我应该推迟这些行。 - 当 VBA 到达带有闭合线的线时,会出现错误消息。这是因为 excel“看不到”我的工作簿。 - 当我关闭错误窗口并尝试再次运行关闭行时,一切正常,因为工作簿有足够的时间打开。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 2011-12-01
相关资源
最近更新 更多