Как работать с модальными пользовательскими формами? - PullRequest
0 голосов
/ 29 мая 2009

У меня есть пользовательская форма с ShowModal, установленным True. Я хочу использовать диалоговое окно как форму и как индикатор выполнения, поэтому после того, как пользователь нажмет «ОК», форма должна остаться на экране, но код должен продолжать выполняться в фоновом режиме. Каков наилучший способ сделать это?

В настоящее время у меня есть две формы: одна, где пользователь вводит данные, а затем вторая с индикатором выполнения. Я бы предпочел объединить их в одну форму для простоты

1 Ответ

2 голосов
/ 29 мая 2009

Одним из способов было бы добавить элемент управления индикатором выполнения в основную форму. (Чтобы сделать это в Excel, в редакторе форм щелкните правой кнопкой мыши на своем наборе инструментов выбор элементов управления. Затем выберите Microsoft Progress Control 6.0 (SP6). После выбора вы можете добавить его, как любой другой элемент управления.)

Оттуда вы просто вызываете код из соответствующей формы пользователя, который будет поддерживать форму. Затем, если вы хотите обновить прогресс, вы можете просто передать управление сабвуферу (есть и другие способы, это просто ленивый способ).

Private Sub CommandButton1_Click()
    Module1.MyCode Me.ProgressBar1
End Sub

Public Sub MyCode(ByRef progress As MSComctlLib.ProgressBar)
    'Do stuff
    progress.value = progress.value + 10
    'Do more stuff
    progress.value = progress.value + 50 'It was a lot of stuff
    'And so on.
End Sub
...