В моей таблице Excel я использую следующие коды VBA, чтобы получить UserForm
с ComboBox , используя значения из sheet1
:
Список для ComboBox1 в электронной таблице:
A B
1 Q1
2 Q2
3 Q3
4 Q4
VBA-код вызов UserForm1 (подключен к кнопке в электронной таблице):
Sub Test()
Call UserForm1.Show(vbModeless)
End Sub
VBA-код UserForm1 :
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
без перерасчета электронной таблицы, но сохранить его в режиме автоматического расчета?