Worksheet_Calculate的VBA子未被触发。 什么触发了这个事件?

我有一个工作簿,并且在一张工作表上有一个Worksheet_Calculate子表单,它在数字单元格上进行一些格式化操作,只是根据该单元格和另一个单元格的值设置小数位数的格式。

我试图debugging问题,并打开EnableEvents,打开我的工作簿,它做到目前为止。 我input的数据,我希望子被触发,并打破我的突破点,但我没有。 我甚至单击“立即计算”和“计算工作表”button,没有任何东西。 那么什么是应该closuresWorksheet_Calculate子? 我需要这个工作簿来完成这个子部分的格式化,只要这么做,我并不在乎它在哪里做。 我什至尝试过Application.EnableEvents = False在子和开始的Application.EnableEvents = True在结束时,无济于事。

我不太了解VBA或者这个工作簿,因为它不是我创build的,所以我可以创build一个C#Web应用程序,而不是Excel电子表格,但我离题了。

编辑1:

以下是有关细胞的公式/值,以澄清事情。 范围Q11:Q35都格式化为数字types。 他们的公式如下。

=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) 

我试图使用这里find的MSDN示例: https : //msdn.microsoft.com/en-us/library/office/ff838823.aspx

这个例子无非就是:

 Private Sub Worksheet_Calculate() Columns("A:F").AutoFit End Sub 

当我在表单上input文本时,它并没有触发,但是当我input一个公式时: =1+1

确保你正在inputExcel需要计算的东西。

编辑:作为@gizlmeier在评论中提到,使用Worksheet_Change如果你想执行后的东西已被更改的代码。

编辑2:详细说明计算何时被触发:

  • input需要直接计算的公式时
  • 当一个单元格被公式引用修改。

所以,在列G:G中input这个公式不会触发Calculate: =LEFT(Ax, 3) 。 如果我们现在将文本或其他静态值input到范围A:A中,则计算被触发,因为col G:G需要返工。