Vba 如何正确设置列表属性?(错误381)

Vba 如何正确设置列表属性?(错误381),vba,excel,Vba,Excel,我已经创建了一个列表框,可以根据textbox中的关键字进行过滤。如果我能正常工作,它就会工作。但是,当列表是从属源时,它停止工作。(列表框的值类似于F1的INDIRECT(),我正在尝试筛选该间接列表) 我有3个列表,如图所示(A、B、D)。D是a的列表,没有重复项。Userform2中的列表框(“lbxCustomers”)根据在单元格F2中选择的单词使用依赖行源。[它一直工作到这里] 列表框中的值将根据文本框(“tbxFind”)中的关键字进行过滤。我在这行“.List=vaCustNam

我已经创建了一个列表框,可以根据textbox中的关键字进行过滤。如果我能正常工作,它就会工作。但是,当列表是从属源时,它停止工作。(列表框的值类似于F1的
INDIRECT()
,我正在尝试筛选该间接列表)

我有3个列表,如图所示(A、B、D)。D是a的列表,没有重复项。Userform2中的
列表框(“lbxCustomers”)
根据在单元格F2中选择的单词使用依赖行源。[它一直工作到这里]

列表框中的值将根据
文本框(“tbxFind”)
中的关键字进行过滤。我在这行“
.List=vaCustNames
”中得到一个错误。我试图将其更改为正常范围(
sheet1.range(…)
),但该列表不是F1的从属列表


.List
需要一个数组。您正在输入一个变体,可能是字符串类型。当然,ListBox需要字符串值,但如果它是单个字符串,则应使用
Add
方法将其添加到列表中,如果希望分配给
list
属性,则必须确保它是一个数组,即使只有单个值。@Variatus我想问题是,如何将列表框中的值存储到数组中?根据您的建议,我应该能够从这个新数组中将其设置为列表属性。(列表框中的值取决于单元格F1)。您可以使用
vaCustNames=.List
将项目存储在数组中。F1获取其值的方式不会有任何区别。它有什么价值?它是一根绳子吗?或者可能是一个表示范围地址的字符串,或者是一个命名范围?
。List
需要一个数组。您正在输入一个变体,可能是字符串类型。当然,ListBox需要字符串值,但如果它是单个字符串,则应使用
Add
方法将其添加到列表中,如果希望分配给
list
属性,则必须确保它是一个数组,即使只有单个值。@Variatus我想问题是,如何将列表框中的值存储到数组中?根据您的建议,我应该能够从这个新数组中将其设置为列表属性。(列表框中的值取决于单元格F1)。您可以使用
vaCustNames=.List
将项目存储在数组中。F1获取其值的方式不会有任何区别。它有什么价值?它是一根绳子吗?或者可能是表示范围地址或命名范围的字符串?
Private Sub UserForm_Initialize()

Me.lbxCustomers.RowSource = Range("F2").Value

End Sub


Private Sub tbxFind_Change()

    Dim i As Long
    Dim sCrit As String
    Dim vaCustNames As Variant

    vaCustNames = Range("F2").Value
    Debug.Print Range("F2").Value

    sCrit = "*" & UCase(Me.tbxFind.Text) & "*"

    With Me.lbxCustomers
        .RowSource = ""
        'Start with a fresh list
        .List = vaCustNames
        '.List = Sheet1.Range("B2:B13").Value 'tested with range and worked
       For i = .ListCount - 1 To 0 Step -1
            'Remove the line if it doesn’t match
           If Not UCase(.List(i)) Like sCrit Then
                .RemoveItem i
            End If
        Next i
    End With

End Sub