【发布时间】:2012-08-16 14:33:09
【问题描述】:
我在工作表“main”中有一个大单元格,其中包含多个文本控件。这些链接到工作表“Refs”中的命名单元格。 “main”中有一个按钮,用于启动 VBA sub。
一开始,子做...
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
然后它更新工作表“Refs”中名称后面的单元格每个更新都被包围
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
RefsSheet.Cells(row_downldstat, col_downldstat) = state
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
VBA 子程序需要一段时间才能完成,因此我们的想法是向用户提供有关正在发生的事情的反馈。不幸的是,在 VBA 子返回之前,文本框不会更新。
如果我将公式 =Down_State 放在“主”工作表的单元格中,我会看到它随着 VBA 例程的运行而更新。 Down_State 与 RefsSheet.Cells(row_downldstat, col_downldstat) 相同。我不喜欢使用这种方法,因为有几个文本框,整个想法是从这样的设计中迁移出来。
请注意,文本框只是在单元格中,而不是在表单中。
我确实知道 application.statusbar 但这不是很明显。
如何在 VBA 子处于活动状态时更新这些文本框?
【问题讨论】:
-
您可以在下面的单元格中显示更新。例如“正在处理数据时请稍候...”或自定义消息,以便用户知道发生了什么...一次子完成处理,清除该单元格的内容并更新文本框。
-
或在更新
Down_State单元格后使用DoEvents,以便excel 有时间更新文本框。 -
您是否尝试过使用“tb.caption = range("A1").value”类型的代码强制更新?根据您的实施和电子表格设计,这可能很有用。
-
@Siddharth Rout:我添加了一个 doevents 但没有帮助。
-
我可以看到你的文件吗?