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 и событие.