我在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