Обновление выпадающего списка из другой формы vba Excel

#excel #vba #combobox #userform

#excel #vba #выпадающий список #пользовательская форма

Вопрос:

У меня есть форма Userform1, внутри которой есть выпадающий список под названием categories, и это поле представляет собой список опций, которые я загружаю в выпадающий список из таблицы в Excel (используя rowsource в свойствах объекта).

Из открытой пользовательской формы1, если я хочу добавить новую опцию в список, который появляется в поле категории, я помещаю кнопку, которая открывает пользовательскую форму2, где я могу создавать категории. Но как только я создаю его и закрываю Userform2, выпадающий список Userform1 не обновляется. Как я могу обновить его, чтобы появился новый параметр, который я создал из Userform 2?

Большое вам спасибо

Комментарии:

1. Попробуйте Userform1.Combobox.Requery .

2. Вы устанавливаете rowsource в VBA или во время разработки?

3. Здравствуйте, я установил rowsource VBA

4. Я опубликовал образец. посмотрите.

5. Combobox.Requery @Harun24HR предназначен для доступа

Ответ №1:

Установите rowsource во время выполнения в UserForm_Initialize()

Код в Userform1

 Option Explicit

Private Sub UserForm_Initialize()
    PopulateCombo
End Sub

Sub PopulateCombo()
    Dim ws As Worksheet
    Dim rng As Range
    Dim lRow As Long
    
    '~~> Change this to the relevant sheet
    Set ws = Sheet1
    
    With ws
        '~~> Find Last Row in Col A
        '~~> Change column as applicable
        lRow = .Range("A" amp; .Rows.Count).End(xlUp).Row
        
        '~~> Identify the range starting from A1
        '~~> Change as applicable
        Set rng = .Range("A1:A" amp; lRow)
        
        '~~> Set your rowsource
        ComboBox1.RowSource = rng.Address(, , , True)
    End With
End Sub
  

И затем вы можете сбросить RowSource , используя PopulateCombo код из Userform2

Что-то вроде

Код в Userform2

 Private Sub CommandButton1_Click()
    '
    '~~> After adding data
    '
    
    UserForm1.PopulateCombo
End Sub
  

Комментарии:

1. Чем вы очень, я постараюсь

2. здравствуйте. У меня это не сработало. У вас есть какие-либо другие идеи.

3. Что вы имеете в виду, это не сработало? Код, которым я поделился выше, проверен и протестирован. Можете ли вы поделиться своим кодом и сообщениями об ошибках, если таковые имеются?