Адрес исходной ячейки Excel ComboBox / formcontrol

#excel #vba #combobox #cell

#excel #vba #выпадающий список #ячейка

Вопрос:

Я создаю выпадающий список со списком из выбранных ячеек с помощью VBA. Как мне получить адрес (пример A1) выбранного элемента списка (ячейка источника элементов списка) с помощью VBA?

Ответ №1:

Вот так… Это одна из тех непонятных вещей. ListFillRange Свойство здесь предназначено для OLEObject встроенного в Shape("Drop Down 1")

 Sub FillComboRange()

    Dim Cb As Object
    Set Cb = ActiveSheet.Shapes("Drop Down 1").OLEFormat.Object
    Cb.ListFillRange = "D16:N30"
    Set Cb = Nothing
End Sub
  

и если вам нужна строка диапазона, просто сделайте:

 Sub GetComboRange()

    Dim Cb As Object, Str as String
    Set Cb = ActiveSheet.Shapes("Drop Down 1").OLEFormat.Object
    Str = Cb.ListFillRange

    MsgBox(Str)

    Set Cb = Nothing
End Sub
  

В частности, для выбранной ячейки адрес может быть задан с помощью Cb.LinkedCell , а параметры затенения задаются с помощью Cb.Display3DShading

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

1. Я улучшаю, что у меня уже есть диапазон, в котором можно выбирать элементы списка. Мне не нужно это объявлять. Мне нужно вернуть адрес выбранному элементу. Адрес ячейки, в которой этот элемент был добавлен в список.

2. да, тогда просто объявите некоторую строку и получите Str = Cb.ListFillRange

3. Привет, я получу пустой почтовый ящик / Strig

4. Привет. Самое сложное в этом вопросе — определить ole-объект. Как только это будет сделано, пожалуйста, попробуйте немного изменить код в соответствии с вашей программой. Спасибо