Combobox не заполняется, когда пользовательская форма инициализируется, но заполняется после закрытия и повторного открытия формы

По какой-то нечетной причине мои комбинированные поля не «предварительно загружаются» содержимым после того, как форма инициализирована, пользователь должен сначала закрыть форму, а затем снова открыть ее, чтобы поля со списком были предварительно заполнены. Это ошибка, которая начинает раздражать конечного пользователя, любая идея, почему это произойдет? Я привязал Boot к кнопке в моей электронной таблице, которая задает форму. Код ниже:

В UserForm1

Private Sub UserForm1_Initialize() Call GetPrimaryContact Call GetSecondaryContact End Sub 

В модуле 1

 Public itm1 Public itm2 Sub Boot() UserForm1.Show Call GetPrimaryContact Call GetSecondaryContact End Sub Sub GetPrimaryContact() Dim Col As New Collection Dim i As Long Dim CellVal As Variant ' Clear filters ThisWorkbook.Sheets("Master").AutoFilter.ShowAllData ' Get last row LastRow = ThisWorkbook.Sheets("Master").Cells(Rows.Count, "A").End(xlUp).Row ' Loop between all of column F to get unique values For i = 3 To LastRow CellVal = ThisWorkbook.Sheets("Master").Range("F" & i).Value On Error Resume Next Col.Add CellVal, Chr(34) & CellVal & Chr(34) On Error GoTo 0 Next i ' Populate the first with primary contacts For Each itm1 In Col With UserForm1.ComboBox1 If IsEmpty(itm1) Then .AddItem "No Contact" Else .AddItem itm1 End With Next End Sub Sub GetSecondaryContact() Dim Col As New Collection Dim i As Long Dim CellVal As Variant ' Clear filters ThisWorkbook.Sheets("Master").AutoFilter.ShowAllData ' Get last row LastRow = ThisWorkbook.Sheets("Master").Cells(Rows.Count, "A").End(xlUp).Row ' Loop between all of column F to get unique values For i = 3 To LastRow CellVal = ThisWorkbook.Sheets("Master").Range("G" & i).Value On Error Resume Next Col.Add CellVal, Chr(34) & CellVal & Chr(34) On Error GoTo 0 Next i ' Populate the first with primary contacts For Each itm2 In Col With UserForm1.ComboBox2 If Not IsEmpty(itm2) Then .AddItem itm2 End With Next End Sub 

Вы должны вызвать функции GetPrimaryContact и GetSecondaryContact в событии инициализации формы, таким образом, управление будет загружено по назначению. См. Примерный код ниже.

 Sub Boot() UserForm1.Show End Sub Private Sub UserForm_Initialize() Call GetPrimaryContact Call GetSecondaryContact End Sub 

Я думаю, ваша проблема в том, что ваш код инициализации имеет Userform1_Initialize. Его следует писать только как Userform_Initialize, и он будет работать. И в Sub загрузите userform1.show последним, а не первым. Если вы перейдете к F8, вы увидите, что когда вы заходите в FormShow, он останавливается там, поэтому он не загружает ваши «Звонки», пока вы не закроете его, и поэтому у вас есть следующий время, которое вы начинаете.

  • Заполнение Excel + заполнение активного поля x comobo из таблицы базы данных Microsoft Sql Management Studio
  • если combo box - значение массива, тогда заполните альтернативный комбинированный блок VBA
  • Excel VBA - использование значения ComboBox для копирования данных нескольких ячеек на другой лист
  • Excel Form VBA Combobox reset
  • Ошибка добавления столбцов ListObject в список combobox Userform
  • Назначение combobox именованного списка в vba
  • Excel Data Validation Combo Box: ограничить параметры для именованного диапазона
  • VBA - Отфильтрованный список для ComboBox с несколькими столбцами
  • заселение combobox на основе другого combobox, несоответствие типов
  • Заполнять поле со списком на основе критериев с excel vba
  • Установить начальную точку для UsedRange
  • Interesting Posts

    Запись нескольких изображений в листах Excel без перезаписи предыдущего изображения

    Проблема с памятью с апплетами matlab runtime в сочетании с виртуальной машиной Java и превосходным

    VBA: конец оператора Ошибка

    Excel-Dna получает глобальные свойства

    Проблема, пытающаяся отфильтровать длинные номера

    Автоматическое обновление фильтра Excel для динамических диапазонов графиков

    Поле слишком маленькое, чтобы принять объем данных, которые вы пытались добавить. Кто-нибудь получил эту ошибку от ADO.NET?

    Как открыть файл с помощью Excel VBA и отключить обновление ссылок

    Excel: выполнение двух функций позади друг друга

    Попытка показать только определенное количество чисел

    Захват ошибок подключения

    Excel VBA Как отсортировать диапазон строк

    Откройте специальный рабочий лист Excel из Powerpoint через VBA

    как сохранить столбцы excel с длинными числами в csv?

    Добавить переменную «Все» в формулу массива индексов

    Давайте будем гением компьютера.