1

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

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

  1. 封面

  2. 日历

  3. 颜色检测

  4. 可打印

颜色检测”表使用用户定义的函数来检测“日历”工作表上单元格的颜色,并根据该颜色返回该特定单元格的数字;例如,如果Calendar!C3填充颜色为"light green"thenColour Detection!C3 = 43

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

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

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

我对 Excel 如何在该领域与 Visual Basic 协同工作的知识非常有限,但在不断增长。

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

在尝试这个时,我以为我偶然发现了解决方案,我注意到如果我只将我的解决方案应用于几个单元格,整个工作表似乎会更新。然后我应用了这个并测试了几次,它起作用了。然后我把我的作品作为我确信的杰作展示给朋友,在向他们展示时,一切都崩溃了,只有我在宏中选择的单元格更新了。

接下来我尝试添加该行

Application.Volatile

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

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

4

1 回答 1

2

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

于 2014-03-05T08:24:05.010 回答