VBA UserForm:如何通过名称访问列表框?

问题描述 投票:-1回答:1

我有一个带有多个ListBox的UserForm,并且需要通过名称访问特定的ListBox(而不是直接由对象引用访问)。我正在尝试遵循this post的建议,但未成功:

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进行循环,但是它也失败了。

请提供一些建议。

excel vba listbox userform createoleobject
1个回答
0
投票

借助@Rory的上述注释,我已修复了代码中的许多问题。这一项工作正常(如果将ListBox添加到UserForm中,而不是添加到工作表中,则是>]:

Dim lbName As String, lb As MSForms.Control

lbName = "SomePattern"
Set lb = MyUserForm.Controls(lbName)
© www.soinside.com 2019 - 2024. All rights reserved.