在特定工作表上的 VBA 中寻找目标(禁用其他打开的文件中的计算)
我有一个关于在 Excel 工作表中使用 VBA 运行目标搜索的快速问题。我注意到,当我在同一个 excel 会话中打开其他工作簿时,我尝试运行的工作簿/工作表中的目标搜索需要更长的时间(我猜测这是因为 excel 计算其他打开的工作簿。
有没有办法禁用计算其他打开的工作簿是否出色?
i have a quick question about running goal seek in VBA within an excel worksheet. I'm noticing that when i have other workbooks opened within the same excel session the goalseek in the workbook/worksheet i am trying to run takes longer (i am guessing it is because excel calculates the other opened workbooks.
is there a way to disable excel from calculating the other opened workbooks?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
也可以通过几种方式绕过这个问题(两者都有缺点)
1. 对于链接目标寻求目标单元格和要更改的目标寻求单元格的公式中不涉及的所有工作表(包括其他工作簿中的工作表),将 .EnableCalculation 属性设置为 False
(这是我的FastExcel产品中用于Active Workbook计算模式的方法。)
2. 编写您自己的 VBA goalseek 例程并使用 Range.Calculate 计算 2 个 goalseek 单元格之间路径中的所有单元格,或者如果全部在一张纸上,则使用 Worksheet.calculate
Its also possible to bypass the problem a couple of ways (both have downsides)
1. set the .EnableCalculation property to False for all the worksheets that are not involved in the formulas linking the goal-seek target cell to the Goal-seek cell-to-be-changed (including the worksheets in the other workbooks)
(This is the method used in my FastExcel product for Active Workbook calculation mode.)
2. Write your own VBA goalseek routine and use Range.Calculate to calculate all the cells in the path bewteen the 2 goalseek cells, or if its all on one sheet use Worksheet.calculate
Excel 计算在应用程序级别完成(所有打开的工作簿)。因此,您应该将计算切换到手动计算模式,运行 goalseek,然后切换回自动或使用 Application.Calculate。
即使如此,打开额外的工作簿也会给 Excel 带来更大的开销,因此速度会更慢。
Excel calculation is done at the application level (all open workbooks). So you should switch calculation to manual calculation mode, run the goalseek and then switch back to automatic or use Application.Calculate.
Even then just the fact of having extra workbooks open gives Excel a larger overhead and so will be slower.