Страницы: 1
RSS
Источник данных для ComboBox - именованный диапазон
 
Ребята, добрый день,

Подскажите, пожалуйста, как для параметра ListFillRange элемента ComboBox ActiveX указать диапазон данных из умной таблицы (например [@Клиенты]), или же любой другой именнованный диапазон, который находится на любом другом листе активной книги.

Не совсем удобно создавать пример, но в случае необходимости обязательно создам и приложу.

Спасибо заранее.
 
Цитата
Framed написал: указать диапазон данных из умной таблицы
Пользуясь свойствами именно Умной таблицы можно так
Код
With Worksheets("Лист1")
    'по названию таблицы и столбца
    .ComboBox1.ListFillRange = .ListObjects("Таблица1").ListColumns("Фамилия").DataBodyRange.Address
    ' или по индексу таблицы и индексу столбца
    .ComboBox1.ListFillRange = .ListObjects(1).ListColumns(3).DataBodyRange.Address
End With

'именованный диапазон
With Worksheets("Лист1")
    .ComboBox1.ListFillRange = .Range("ДАННЫЕ").Address
End With

'для получения данных с ДРУГОГО листа необходимо добавлять имя листа
With Worksheets("Лист1")
    'по названию таблицы и столбца
    ActiveSheet.ComboBox1.ListFillRange = .Name & "!" & .ListObjects("Таблица1").ListColumns("Фамилия").DataBodyRange.Address
    
    'по индексу таблицы и индексу столбца
    ActiveSheet.ComboBox1.ListFillRange = .Name & "!" & .ListObjects(1).ListColumns(3).DataBodyRange.Address
    
    'именованный диапазон
    ActiveSheet.ComboBox1.ListFillRange = .Name & "!" & .Range("ДАННЫЕ").Address
End With
Изменено: Sanja - 15.03.2018 11:11:09
Согласие есть продукт при полном непротивлении сторон
 
Прикладываю черновик.

Пытаюсь использовать:

With Worksheets("Price-list")
   ActiveSheet.ComboBox1.ListFillRange = .Name & "!" & .ListObjects("Price").ListColumns("Наименование").DataBodyRange.Address
End With

Но не работает - в элементе ActiveX не появляются наименования, не могу понять в чем проблема.
 
Имя листа нужно дополнительно еще и апострофами обрамить
Код
With Worksheets("Price-list")
    Worksheets("Форма").ComboBox1.ListFillRange = "'" & .Name & "'!" & .ListObjects(1).ListColumns(1).DataBodyRange.Address
    Worksheets("Форма").ComboBox2.ListFillRange = "'" & .Name & "'!" & .ListObjects("Price").ListColumns("Вид товара").DataBodyRange.Address
    'далее по аналогии...
End With
Согласие есть продукт при полном непротивлении сторон
 
Спасибо большое за помощь!
Страницы: 1
Наверх