我有一个工作簿,在一个工作表上,它有一个子Worksheet_Calculate,它对数字的单元格进行一些格式化,只是根据该单元格和另一个单元格的值设置要显示的小数的格式。
我试着调试这个问题,打开EnableEvents,打开我的工作簿,到目前为止它还在做它的事情。我输入数据,我预计潜艇将被触发,并击中我的断点,但我没有。我甚至点击“计算现在”和“计算表”按钮,什么都没有。那么,Worksheet_Calculate潜艇应该发射什么呢?我需要工作簿来完成这个子程序中的格式化,我不关心它在哪里做,只要它做了它。我甚至在潜艇的开头尝试了Application.EnableEvents = False,在子的末尾尝试了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)发布于 2016-04-21 12:42:34
我尝试使用这里找到的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需要重新处理。
https://stackoverflow.com/questions/36769799
复制相似问题