我在做一个小项目时遇到了问题。我希望有人可以帮助我,在此先感谢!
我想要完成什么?
我创建了动态的新 ActiveX.ComboBoxes,其中包含给定的列表。当用户选择 ComboBox 并更改所选项目时,我触发了一个事件。(这工作得很好)。
现在:我需要一个方法来检查哪个“ActiveX ComboBox”触发了事件。有什么方法可以像使用“ActiveCell”一样检查“ActiveObject”吗?问题是 ActiveCell 不起作用,因为 Cell 不只是单元上方的对象处于活动状态。
当前代码:添加新的组合框
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
我如何触发事件:
我用了一种肮脏的方式来做到这一点
我将组合框链接到它下面的单元格。然后我在另一个单元格中写了一个公式,它应该是相同的值。然后我使用“计算”事件(遗憾的是它没有提供目标),例如:
Combobox1 = above Cell A2
Combobox1.linkedcell = A2
B2 = A2
现在,如果我更改组合框项目,A2 的值会发生变化,B2 的值也会随之改变,并且事件会被触发。