VBA (Excel) - получить активный объект (ActiveX ComboBox) во время выполнения

У меня проблема при работе над небольшим проектом. Я надеюсь, что кто-то может мне помочь, заранее спасибо!

Чего я пытаюсь достичь?

Я создаю новые динамические ActiveX.ComboBox с заданным списком в нем. Когда пользователь выбирает ComboBox и изменяет выбранный элемент, у меня срабатывает событие. (это работает просто отлично).

Теперь: мне нужен метод, чтобы проверить, какой "ActiveX ComboBox" вызвал событие. Есть ли способ проверить "ActiveObject", как я могу сделать с "ActiveCell"? Проблема в том, что ActiveCell НЕ работает, так как ячейка не активна только объект над ячейкой.

Текущий код: добавление новых комбинированных списков

 Sub NewComboBox(ByVal Row As Integer, Name As String, CellWidth As Integer,  CellHeight As Integer)

    Set ourCombo = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
                Link:=True, DisplayAsIcon:=False, Left:=plan.Cells(Row, CellNumber_Product).Left, Top:=plan.Cells(Row, CellNumber_Product).Top, Width:=CellWidth, _
                Height:=CellHeight)
        With ourCombo
            .LinkedCell = plan.Cells(Row, CellNumber_Product).Address          
            .ListFillRange = "DTB_1!A:A"

End Sub

Как я получу событие, вызванное:

Я использовал грязный способ сделать это

Я связал Combobox с клеткой под ним. Затем я написал формуляр в другой ячейке, что он должен быть того же значения. И затем я работаю с "рассчитать" событие (которое, к сожалению, не обеспечивает цель), например:

Combobox1 = above Cell A2
Combobox1.linkedcell = A2
B2 = A2

Теперь, если я изменю элемент комбинированного списка, значение А2 изменится, и вместе с ним сработает значение В2 и событие.

0 ответов

Другие вопросы по тегам