Excel 2010 VBA 创建 ActiveX 列表框时出现“对象不支持此 属性 或方法”

Excel 2010 VBA Creating ActiveX ListBox gives 'Object doesn't support this property or method'

我正在尝试使用此代码清除所有 ActiveX 对象,然后创建一个 ActiveX 列表框。创建 ListBox 会导致“对象不支持此 属性 或方法”。

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

但是,如果我将代码分成一个创建 ListBox 的 Sub,然后一个设置 Properties,如果我手动执行它们,它就可以正常工作。如果我从第三个 Sub 执行两个分开的 Sub,我会得到与上面相同的错误。

如果问题与 Excel 在创建 ListBox 后尝试设置属性的速度有关,我尝试 Application.Wait 然后使用睡眠 API,每个2 秒,但这无济于事。

感谢任何关于如何找到问题的想法

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

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