我有一个工作簿,并且在一张工作表上有一个Worksheet_Calculate子单元,它在单元格中对数字进行一些格式化,只是根据该单元格和另一个单元格的值设置小数位数的格式。Worksheet_Calculate的VBA子未被触发。什么触发了这个事件?
我试图调试该问题并打开EnableEvents,打开了我的工作簿,它到目前为止做了它的事情。我输入数据,我期望sub被触发并打破我的突破点,但我没有。我什至没有点击“立即计算”和“计算表”按钮。那么应该怎样激发Worksheet_Calculate子?我需要工作簿来完成这个子部分完成的格式化,只要它做到了,我并不在乎它在哪里做。我甚至在sub的开头尝试了Application.EnableEvents = False,并且在Sub的结尾处Application.EnableEvents = True,但是无济于事。
我不太了解VBA或这个工作簿,因为它不是我创建的东西,我会用C#的Web应用程序而不是Excel电子表格,但我会离题。
编辑1:
下面是公式/用于所讨论的单元的值,以澄清事情有点。范围Q11:Q35全部格式化为数字类型。他们的公式如下。
=IF(OR(O11="",P11=""),"",(O11/P11)*100)
上面引用的单元格分别对于O和P有以下公式。
=IF(OR(H11=""),"",INDEX(H11:L11,MATCH(9.99999999999999E+307,H11:L11))-M11)
=IF(AND(M11="",N11=""),"",N11-M11)
如果要在更改某些内容后执行代码,请使用Worksheet_Change。 Worksheet_Calculate仅在工作表计算时执行 – gizlmo
Worksheet_Calculate将在其单元格中更改数字格式。 – DrPepperholik
如果更改公式所依赖的单元格不会触发'Calculate'事件,则可以手动设置计算集或禁用事件。 – Rory