active x combobox命名问题

时间:2017-07-10 11:59:25

标签: excel vba excel-vba combobox

我的VBA代码有点奇怪的问题,我想知道是否有人可以解决出错的问题。

在打开我的工作簿时,这段代码会触发

Sub build_SupervisorDropdownBox()

Dim locationRange As Range
Set locationRange = Sheets("Dashboard").Range("O3:W3")

Set sList = Sheets("Dashboard").OLEObjects.Add _
            (ClassType:="Forms.ComboBox.1", _
            Link:=False, _
            DisplayAsIcon:=False, _
            Left:=locationRange.Left, _
            Top:=locationRange.Top, _
            Width:=locationRange.Width, _
            Height:=locationRange.Height)
sList.name = "supervisorList"

End Sub

这会按预期创建我的组合框,但它的默认名称为comboBox1。但是,如果我然后删除这个comboBox并再次运行完全相同的代码,那么所有内容都会被正确创建和命名,我不知道为什么会发生这种情况。

是否有人能够指出我需要注意的正确方向。

谢谢:)

编辑:我目前将supervisorList和sList声明为公共变量

1 个答案:

答案 0 :(得分:0)

请尝试以下方法:

ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, DisplayAsIcon:=False, Left:=0, Top:=0, Width:=100, Height:=20).Name = "SomeNameToo" 

或以下

 Set curCombo = ActiveSheet.Shapes.AddFormControl(xlDropDown, Left:=Cells(1, 1).Left, Top:=Cells(2, 1).Top, Width:=100, Height:=20)
 With curCombo
        .ControlFormat.DropDownLines = 2
        .ControlFormat.AddItem "Temp1", 1 ' Adding data
        .ControlFormat.AddItem "Temp2", 2 ' Adding data
        .Name = "newname"
        .OnAction = "newname_Change"
 End With