【发布时间】:2014-03-05 16:24:05
【问题描述】:
我目前正在处理一个名为 Calendar.xlsm 的 Excel 电子表格 我有 Excel2010。
我的工作簿有以下工作表:
封面
日历
颜色检测
可打印
“颜色检测” 工作表使用用户定义函数来检测“日历”工作表上单元格的颜色,并根据该颜色返回一个数字特定细胞;例如,如果Calendar!C3 的填充颜色为"light green",则Colour Detection!C3 = 43
为了完整起见,UDF 称为 ColorIndex,由 Bob Phillips 编写。
然后,我使用条件格式根据“颜色检测”中存储的数字为我的“Printable”工作表中的单元格着色。
当“日历”表上的颜色发生变化时,我的问题就开始了,通常发生这种情况时,“颜色检测”保持不变,除非我手动选择单元格并按回车键。
我对 Excel 如何在该领域与 Visual Basic 配合使用的知识非常有限,但正在不断增长。
我对解决方案的第一个想法是记录一个宏,在该宏中我选择了每个单元格并逐个点击返回。然后,我将宏附加到 “封面” 上名为“计算”的按钮上。这立即不起作用,因为大约有 800 个单元使用此 UDF。
在尝试此操作时,我以为我偶然发现了解决方案,但我注意到如果我将解决方案仅应用于几个单元格,则整个工作表似乎都会更新。然后我应用了这个并测试了几次,它起作用了。然后,我将我的作品作为我确信的杰作展示给朋友,在向他们展示时,一切都崩溃了,只有我在宏中选择的单元格更新了。
接下来我尝试添加该行
Application.Volatile
我的 UDF,但这并没有什么不同。
我的问题是如何通过简单的操作(例如按下重新计算按钮)轻松强制工作表中的每个单元格进行更新?
【问题讨论】: