在我的Excel电子表格中,我使用以下VBA代码使用UserForm
中的值通过 ComboBox 获得了sheet1
:
电子表格上的 ComboBox1 列表:
A B
1 Q1
2 Q2
3 Q3
4 Q4
要调用 UserForm1(已连接到电子表格上的按钮)的VBA代码:
Sub Test()
Call UserForm1.Show(vbModeless)
End Sub
UserForm1 的VBA代码:
Private Sub UserForm_Activate()
ComboBox1.List = Sheet1.Range("A1:A4").Value
End Sub
Private Sub CommandButton1_Click()
Unload UserForm1
End Sub
到目前为止,所有这些都工作正常。但是,当用户按下按钮来加载UserForm1
时,整个电子表格将由Excel重新计算,这会花费很多时间。
因此,我尝试将代码更改为此:
Sub Test()
Application.Calculation = xlManual
Call UserForm1.Show(vbModeless)
Application.Calculation = xlAutomatic
End Sub
使用此代码可以加载UserForm1
,而无需重新计算电子表格。
但是,由于我不想使电子表格保持“手动”重新计算模式,因此必须在VBA代码中将其重新设置为“自动”。
但是,这会导致同样的问题,即加载时间长。唯一的区别是,重新计算现在在显示UserForm
之后发生。
是否可以加载整个UserForm
而无需重新计算电子表格,而是将其保持在自动计算模式下?