我有一个带有各种选项的组合框。对于每个选项,某些单元格将根据值进行格式化。
当值每隔几秒钟改变一次时,程序需要不断检查是否满足条件。有没有人知道程序可以每隔几秒检查一次表单的方式???
答案 0 :(得分:0)
根据您的需要,三种不同方法中的任何一种都可能满足您的需求。
当用户更改工作表时,将触发Excel Worksheet_Change事件,不包括由于重新计算而导致的单元格公式值的更改,但包括代码更改。 VBA代码通常如下所示:
Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
' <test or set scope of action of the macro>
' <do something>
Application.EnableEvents = True
End Sub
Target参数是内置的,并且始终引用已更改并触发事件的单元格。您的代码必须放在工作表模块中(最容易通过右键单击工作表选项卡并选择查看代码来访问),而不是标准模块。
重新计算工作表后会发生Worksheet_Calculate事件,包括自动重新计算。代码看起来像:
Sub Worksheet_Calculate()
Application.EnableEvents = False
' <do something>
Applicaton.EnableEvents = True
End Sub
请注意,此事件不提供目标,即触发所有重新计算的单元格,而不是单个单元格。如果您的代码不强制重新计算,则无需禁用然后重新启用事件。如果希望代码重新计算所选单元格,可以将计算设置为手动(Application.Calculation = xlManual),然后在退出过程时将其重置为自动(Application.Calculation = xlAutomatic)。与Worksheet_Change事件一样,您的代码必须放在工作表模块中。
或者最后,您可以设置计时器以使用Excel的Application.OnTime事件或Windows计时器定期重新运行代码。您的程序必须包含启动计时器并停止计时器的代码。有关使用OnTime事件的示例,请参阅此SO answer。有关使用Windows计时器(以及Application.OnTime事件)的说明,请参阅Chip Pearson的评论here。