我目前正在处理一个名为Calendar.xlsm的Excel电子表格 我有Excel2010。
我的工作簿有以下工作表:
封面
日历
颜色检测
打印
“颜色检测”表单使用用户定义函数检测“日历”工作表中的单元格颜色,并根据该颜色返回一个数字特定细胞;例如,如果Calendar!C3
的填充颜色为"light green"
,那么Colour Detection!C3 = 43
为了完整起见,UDF称为ColorIndex,由 Bob Phillips 编写。
然后我根据“颜色检测”中存储的数字,使用条件格式化为“可打印”工作表中的单元格着色。
当“日历”表格上出现颜色变化时,我的问题就开始了,通常情况发生这种情况“颜色检测”保持不变,除非我手动选择单元格按回车。
我对Excel在这方面的工作原理的了解非常有限,但还在不断增长。
我对解决方案的第一个想法是记录一个宏,我选择每个单元格并逐个点击返回。然后我将宏附加到“封面页”上名为Calculate的按钮。立即这不起作用,因为有大约800个单元格使用此UDF。
尝试这个时我觉得我偶然发现了解决方案,我注意到如果我将解决方案仅应用于几个单元格,整个工作表似乎都会更新。然后我应用了这个并测试了几次并且它有效。然后我把我的工作呈现给了一位朋友,作为我确定的杰作,在向他们展示时,它全部落空了,只有我在宏中选择的细胞更新了。
接下来我尝试添加行
Application.Volatile
到我的UDF,但这并没有什么不同。
我的问题是如何通过执行简单的操作(例如按重新计算按钮)来轻松强制工作表中的每个单元格进行更新?
答案 0 :(得分:2)
尝试Ctrl-Alt-F9,这会强制计算工作簿中的每个公式。或者,您可以在workbook_Open事件中将workbook.forcefullcalculation设置为True。