Загрузите пользовательскую форму без перерасчета электронной таблицы - PullRequest
0 голосов
/ 26 июня 2018

В моей таблице 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 без перерасчета электронной таблицы, но сохранить его в режиме автоматического расчета?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...