我有一个工作簿,并且在一张工作表上它有子工作表_Calculate,它在数字的单元格上进行一些格式化,只需根据该单元格和另一个单元格的值设置要显示的小数位数格式。
我试图调试问题并打开EnableEvents,打开我的工作簿,它到目前为止做了它的事情。我输入数据,我希望子触发并达到我的断点,但我没有。我甚至没有点击“立即计算”和“计算工作表”按钮。那么什么应该触发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)
答案 0 :(得分:0)
我尝试使用此处的MSDN示例:https://msdn.microsoft.com/en-us/library/office/ff838823.aspx
这个例子不过是:
Private Sub Worksheet_Calculate()
Columns("A:F").AutoFit
End Sub
当我只是在工作表上输入文字时没有触发,但是当我输入公式时它确实触发了:=1+1
。
确保您实际上正在输入Excel需要计算的内容。
编辑:正如评论中提到的@gizlmeier,如果要在更改某些内容后执行代码,请使用Worksheet_Change。
编辑2:详细说明何时触发计算:
因此,在G列中输入此公式:G不会触发计算:=LEFT(Ax, 3)
。如果我们现在将文本或其他静态值输入到范围A:A中,则触发计算,因为需要重新进行col G:G。