如何防止更新Excel中的单元格?
我有一个相当大的范围(10,000行,10列),我每天都按行填写。 我也有一个较小的范围(366行,5列),其中,对于每个单元格,我运行一个macros。 这个macros几乎做了什么DSUM或SUMIF做,但有多个标准。 问题是,在实现了这个奇特的东西之后,我无法正常填充我的东西,因为我填充macros的每个单元格都跑了几十次,而且每次循环数百次,花了大约5秒钟的时间让我填充下一个单元格
我希望能够防止更小的范围被更新(或者macros不被运行),所以我可以正常填充它,然后按下button来更新所有内容。
您将需要locking目标范围(将Range的Locked
属性设置为true
)。 然后,您将需要通过调用工作表的Protect()
方法来Protect()
工作表。 以下是如何locking和解锁单元格A1:A4
示例。
锁:
Sheet1.Range("A1:A4").Locked = true Sheet1.Protect()
解锁:
Sheet1.Unprotect()
编辑 :重新读取问题后,似乎OP正在使用Worksheet_Change事件。 我有一个词:
停
只需在工作表中放入一个ActiveXbutton,然后为其指定一个macros,如下所述。
Worksheet_Change事件充满了危险。 要小心谁进来,因为有龙。
那么这是:
Application.Calculation = xlCalculationManual
但是,这将停止所有的重新计算,直到您将其设置为自动或明确地调用Recalc。 这是足够的,还是你需要更多?
如果您需要将重新限制限制仅限于执行特定的macros,则执行以下操作:
- 添加一个“全局IShouldNotRun作为布尔”到您的macros(S)
- 你的macros应该检查IShouldNotRun值,如果它是真的,则退出。
- 写另一个macros来切换这个全局。
- 无论你在做什么数据加载调用例程将全局设置为True。
- 完成加载后重置,并调用Calculate,CalculateFull或CalculateFullRebuild。
我的电脑没有ecell,所以我不能检查确切的path,但据我记得去工具/选项菜单后有一个选项卡'计算'或'计算',您可以禁用自动公式重新计算。