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
我正在尝试使用此代码清除所有 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