Создание.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
Другие вопросы по тегам