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