Заполнить поле со списком (элемент управления формой) с помощью VBA в Excel 2013

#excel #vba #combobox

#excel #vba #поле со списком

Вопрос:

Я новичок в VBA. Я уже несколько часов пытаюсь выполнить простую функцию заполнения поля со списком (элемент управления формой) с помощью кода VBA. Я просмотрел множество веб-сайтов (включая этот), но ни один из кодов, похоже, не работает. Я использовал этот код. (Я помещаю этот код в модуль)

 Sub populateDropDown303()

With Worksheets("S1 Fuel Consumption").Shapes("Drop Down 303").ControlFormat

.AddItem "this"

.AddItem "that"

End With

End Sub
 

Привет, у меня работает код. Но каждый раз, когда я выбираю значение из выпадающего списка со списком, он снова запускает код и отображает повторяющиеся значения. Как мне это удалить?

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

1. Можете ли вы лучше определить «не работает»? Вы получаете сообщение об ошибке, отсутствие результатов, неправильные результаты и т. Д…

2. Привет.. Я не получаю никаких результатов. Выпадающий список со списком просто пуст.

3. Привет, у меня работает код. Но каждый раз, когда я выбираю значение из выпадающего списка со списком, он снова запускает код и отображает повторяющиеся значения. Как мне это удалить?

Ответ №1:

Попробуйте это:

 Sub populateDropDown303()
    Dim ws As Worksheet: Set ws = Worksheets("S1 Fuel Consumption")
    With ws.Shapes("Drop Down 303").ControlFormat
        .RemoveAllItems '~~> This is what you lack I think
        .AddItem "This"
        .AddItem "That"
    End With
End Sub
 

Я добавил новую переменную ws Worksheet типа, чтобы включился Intellisense.
Таким образом, вам будет легче просматривать доступные методы и свойства для объекта, над которым вы работаете. HTH.

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

1. Эй, да, это работает. Большое спасибо: D А также, у меня есть несколько таких выпадающих списков. Могу ли я заполнить их только в одном коде? может быть, с помощью функции диапазона формы?

2. @user3756196 Да, вы можете это сделать. Как вы хотите их заполнить? Где вы получаете элементы, которые вы будете добавлять в каждый. Если это не так сложно, вы даже можете использовать цикл.

3. Эй, да .. Я использовал цикл 🙂 Большое вам спасибо

4. Привет, L42, мне нужна еще одна помощь. Я использую приведенный выше код для 4 таких выпадающих списков. Итак, я ввел цикл в коде для заполнения этих 4 выпадающих списков. Теперь список заполнен, но всякий раз, когда я выбираю любой элемент из выпадающего списка, он отображается пустым.

Ответ №2:

 With Worksheets("S1 Fuel Consumption").Dropdowns("Drop Down 303")
    .AddItem "this"
    .AddItem "that"
End with
 

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

1. Ссылка на документацию и любой сопроводительный текст, объясняющий, что вы изменили, будут очень полезны.

2. Я поместил точный код в «модуль» в разделе PopulateDropDown303(), он все еще не работает.. Я просто не могу понять, почему :/