如何防止更新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,则执行以下操作:

  1. 添加一个“全局IShouldNotRun作为布尔”到您的macros(S)
  2. 你的macros应该检查IShouldNotRun值,如果它是真的,则退出。
  3. 写另一个macros来切换这个全局。
  4. 无论你在做什么数据加载调用例程将全局设置为True。
  5. 完成加载后重置,并调用Calculate,CalculateFull或CalculateFullRebuild。

我的电脑没有ecell,所以我不能检查确切的path,但据我记得去工具/选项菜单后有一个选项卡'计算'或'计算',您可以禁用自动公式重新计算。