Создание.additem для combobox
У меня есть список тарифов, которые я настроил на автофильтре, чтобы при выборе определенного канала продаж и правильном пароле отображались только тарифы, доступные для этого канала.
Моя проблема в том, что я не могу понять, как заставить командную кнопку также заполнить поле со списком.
мой .additem
код ниже продолжает возвращать
Ошибка "Отказано в доступе"
Dim TLoc As Range
Dim ws As Worksheet
Set ws = Worksheets("Tariff Matrix")
Set TLoc = Range("Tariffs")
For Each TLoc In ws.Range("Tariffs")
With MobilePricing.Tariff1
.AddItem TLoc.Value
End With
Next TLoc
Любая помощь будет принята с благодарностью.
1 ответ
Решение
Сначала вам нужно проверить RowSource
вашего ComboBox, если он не пустой, очистите его.
Тогда как вы хотите иметь только видимые ячейки (после автофилера); вам нужно использовать Range("Tariffs").SpecialCells(xlCellTypeVisible)
,
Вот ваш исправленный код:
Dim TLoc As Range
Dim ws As Worksheet
Set ws = Worksheets("Tariff Matrix")
Set TLoc = Range("Tariffs")
For Each TLoc In ws.Range("Tariffs").SpecialCells(xlCellTypeVisible).Cells
With MobilePricing.Tariff1
.AddItem TLoc.Value
End With
Next TLoc
Чтобы зациклить элементы управления UserForm, используйте что-то вроде этого:
Dim Ctrl As Control
For Each Ctrl In Me.Controls
If TypeName(Ctrl) <> "ComboBox" Then
Else
MsgBox Ctrl.Object.Name
'Your code for one combobox (everyone will be referenced as Ctrl)
End If
Next Ctrl