我有一个带有多个列表框的用户窗体。我需要按名称访问 ListBox(而不是直接通过对象引用)。
我正在尝试遵循这篇文章的建议:
Dim ws As Worksheet, Field As String, lbName As String, lb As MSForms.ListBox
Field = "SomeString"
lbName = "SomePattern_" & Field
Set lb = ws.OLEObjects(lbName).Object ' Run-time error '1004': Method 'OLEObjects' of object '_Worksheet' failed
我确定我正在寻找正确的名称,因为 ListBox 也是按名称添加的:
' inside the UserForm code
With Me.Controls
Dim lstbox As MSForms.ListBox
Set lstbox = .Add("Forms.ListBox.1", Name:="SomePattern_" & Field, Visible:=True)
Debug.Print lstbox.Name ' prints an exact match to lbName
End With
我试图循环通过控件而不是 OLEObjects,但它也失败了。