我按照我在这里找到的所有建议自动更改组合框的“更改”功能。一切正常,代码不会产生任何错误,直到我想更改 excel 表上的组合框值:宏未启动。
我的代码是:
在类文件中(类:COptions)
Option Explicit
Public WithEvents lOptions As MSForms.ComboBox
Private Sub lOptions_Change()
MsgBox "hello "
End Sub
在模块文件中
Sub macrotest()
Dim j As String
Dim tObject
Set tObject = Sheets("test").OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
Link:=False, _
DisplayAsIcon:=False, _
Left:=50, Top:=80, _
Width:=100, _
Height:=15)
tObject.Name = "Combobox32"
tObject.Object.Font.Size = 8
tObject.Object.BackColor = vbWhite
tObject.Object.AddItem "blub1"
tObject.Object.AddItem "blub2"
'MsgBox "tObject " & tObject.Name
Dim Obj As OLEObject
Dim Cl As COptions
Set Cl = Nothing
Set Collect = New Collection '(previously declared as global variable)
For Each Obj In Sheets("test").OLEObjects
If TypeOf Obj.Object Is MSForms.ComboBox Then
MsgBox Obj.Name 'check if we enter in the loop : always successfull
Set Cl = New COptions
Set Cl.lOptions = Obj.Object
Collect.Add Cl
End If
Next Obj
MsgBox "Collect " & Collect.Count ' which result is 1
End Sub
所以一切正常,但回到 Excel 工作表,当我更改组合框值时,什么也没有发生。
顺便说一句,我真的不明白这段代码的工作方式。
创建和修改已定义类的新对象(此处为:Cl)。但是作为更改目标的组合框,它在哪里修改?为什么通过更改新对象 Cl,它应该更改的是目标对象 ComboBox ?
我不知道发生了什么,因为我没有在网上发现这个错误。
我应该怎么做才能解决这个问题?