使用宏强制单元格在Excel中重新计算

时间:2014-03-05 06:23:23

标签: excel cells forcing

我目前正在处理一个名为Calendar.xlsm的Excel电子表格 我有Excel2010。

我的工作簿有以下工作表:

  1. 封面

  2. 日历

  3. 颜色检测

  4. 打印

  5. “颜色检测”表单使用用户定义函数检测“日历”工作表中的单元格颜色,并根据该颜色返回一个数字特定细胞;例如,如果Calendar!C3的填充颜色为"light green",那么Colour Detection!C3 = 43

    为了完整起见,UDF称为ColorIndex,由 Bob Phillips 编写。

    然后我根据“颜色检测”中存储的数字,使用条件格式化为“可打印”工作表中的单元格着色。

    当“日历”表格上出现颜色变化时,我的问题就开始了,通常情况发生这种情况“颜色检测”保持不变,除非我手动选择单元格按回车。

    我对Excel在这方面的工作原理的了解非常有限,但还在不断增长。

    我对解决方案的第一个想法是记录一个宏,我选择每个单元格并逐个点击返回。然后我将宏附加到“封面页”上名为Calculate的按钮。立即这不起作用,因为有大约800个单元格使用此UDF。

    尝试这个时我觉得我偶然发现了解决方案,我注意到如果我将解决方案仅应用于几个单元格,整个工作表似乎都会更新。然后我应用了这个并测试了几次并且它有效。然后我把我的工作呈现给了一位朋友,作为我确定的杰作,在向他们展示时,它全部落空了,只有我在宏中选择的细胞更新了。

    接下来我尝试添加行

    Application.Volatile
    

    到我的UDF,但这并没有什么不同。

    我的问题是如何通过执行简单的操作(例如按重新计算按钮)来轻松强制工作表中的每个单元格进行更新?

1 个答案:

答案 0 :(得分:2)

尝试Ctrl-Alt-F9,这会强制计算工作簿中的每个公式。或者,您可以在workbook_Open事件中将workbook.forcefullcalculation设置为True。