Excel 2010 VBA创buildActiveX列表框给出'对象不支持此属性或方法'

我试图用这个代码清除所有的ActiveX对象,然后创build一个ActiveX列表框。 在“对象不支持此属性或方法”创build列表框结果。

Sub DeleteActiveXObjects() Dim oOBJECT As Shape For Each oOBJECT In Sheets("Search").Shapes If oOBJECT.Type = 12 Then oOBJECT.Delete Next oOBJECT ActiveSheet.Select End Sub Sub CreateListBox() Dim oLISTBOX As OLEObject Set oLISTBOX = Sheets("Search").OLEObjects.Add(classtype:="Forms.ListBox.1") Sheets("Search").ListBox1.Object.IntegralHeight = False Sheets("Search").ListBox1.Object.Font.Size = 11 Sheets("Search").ListBox1.Top = 220.5 Sheets("Search").ListBox1.Left = 20 Sheets("Search").ListBox1.Width = 1100 Sheets("Search").ListBox1.Height = 500.25 End Sub 

然而,如果我将代码分成一个创buildListBox的Sub,然后一个设置属性,如果我手动执行它们,它工作正常。 如果我从第三个子执行两个分开的子,我得到与上面相同的错误。

如果问题与创buildListBox之后Excel试图设置属性的速度有关,我尝试了Application.Wait,然后使用Sleep API,每个都是2秒,但这并没有帮助。

任何想法如何find问题,表示赞赏

改用这个。 它确保您正在设置正在创build的列表框的属性:

 Sub CreateListBox() Dim oLISTBOX As OLEObject Set oLISTBOX = Sheets("Sheet6").OLEObjects.Add(classtype:="Forms.ListBox.1") With oLISTBOX .Object.IntegralHeight = False .Object.Font.Size = 11 .Top = 220.5 .Left = 20 .Width = 1100 .Height = 500.25 End With End Sub