#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(), он все еще не работает.. Я просто не могу понять, почему :/