我在Excel中遇到了与我的VBA脚本有关的问题。我所做的是基本上创建按钮,当按下时会在其中一张表中创建一组两个额外的组合框。可以连续按下此按钮以添加更多组合框。运行时在Excel上检测组合框上的事件
这些新创建的组合框将像这样:
- 创建2组合框
- Combobox1将在控制片加载一些列表
- 只要选择在Combobox1一个项目,Combobox2将加载产品清单要添加到Combobox2
的代码,用于将按钮是这样
Sub Add_Criteria()
Dim controlNum As Integer
Dim name1 As String
Dim name2 As String
Dim oOle1 As OLEObject
Dim oOle2 As OLEObject
Dim uniqueString As String
Dim cb1 As Object
controlNum = Sheets("Controls").Range("A16").Value
'adding Control
Set oOle1 = Sheets("System").OLEObjects _
.Add(ClassType:="Forms.ComboBox.1", Left:=10, _
Top:=75 + (controlNum * 20), Width:=100, Height:=18)
Set oOle2 = Sheets("System").OLEObjects _
.Add(ClassType:="Forms.ComboBox.1", Left:=120, _
Top:=75 + (controlNum * 20), Width:=100, Height:=18)
'adding properties
oOle1.Name = "Criteria" & controlNum * 2 - 1
oOle2.Name = "Criteria" & controlNum * 2
'adding control var
Sheets("Controls").Range("A16").Value = controlNum + 1
With oOle1.Object
.List = Sheets("Controls").Range("A5:A13").Value
End With
End Sub
问题是,我无法检测到它的事件。我需要更改在combobox1中的值更改时创建的第二个组合框上显示的值。我试图使用下面的参考,我仍然不能。任何人都可以指导我如何做到这一点
参考(一直在这个问题天):
http://www.dbforums.com/microsoft-excel/1641165-detecting-click-event-dynamically-created-controls.html(这是为用户窗体,我不知道为什么我不能复制这片)
正是我所需要的。当组合框被添加和删除时,这个答案增加了另一个问题。 每当我添加组合框,它将被命名为标准1,Criteria2,等等 当我删除,我会删除最后2个标准,也就是说,如果我有10个组合框,我会删除Criteria10和Criteria9 但随着这样,添加到工作表的事件不会被删除,并且会创建一个模糊的子项,因为存在具有相同名称的子项。我可以在不减少的情况下添加一个增量命名,但它并不优雅。有没有办法将其删除 PS:我想+1这个答案,但我需要15 rep =。= – 2012-02-28 10:39:07