搜索列表框错误 _ 无法设置列表 属性。无效 属性 值
Search ListBox Error _ Could not set the List property. Invalid property value
我想在TextBox2中输入数据,以便在ListBox1中搜索数据,但出现错误"Could not set the List property. Invalid property value"。调试“.List(iii, ii - 1) = x1(i, ii)”
我的代码
Private Sub TextBox2_Change()
Dim x1, i As Long, ii As Long, iii As Integer
x1 = [myCar]
Application.ScreenUpdating = False
With ListBox1
If TextBox2 = "" Then
.RowSource = "myCar"
Else
.RowSource = ""
For i = 1 To UBound(x1, 1)
If LCase(x1(i, 3)) Like LCase(TextBox2) & "*" Then
For ii = 1 To 12
.AddItem
.List(iii, ii - 1) = x1(i, ii)
Next
iii = iii + 1
End If
Next
End If
End With
End Sub
未声明变量 x1
。因此它应该是一个变体。 [myCar]
似乎是一个范围名称。如果是这样,如果已知其位置,则可以将其分配给 x1
。也许您的 TextBox 在工作表上并且引用确实有效。也许 x1
从那时起是空的。我建议你测试一下。
接下来将 "MyCar" 分配给 ListBox 的 RowSource 属性。如您所知,属性 包含一个字符串。如果 MyCar
是范围名称,则它不能是有效的范围地址。也许像 Range(MyCar).Address
这样的东西会起作用。 .RowSource = "myCar"
只是将单词 "MyCar" 分配给 RowSource,这应该会失败。
在 For i = 1 To UBound(x1, 1)
中,您现在期望 x1
是一个数组。也许 x1 = [myCar]
等同于 ActiveSheet.Range(MyCar).Value
。我不会使用该语法,但您已经在上面检查了它的功能。
假设 x1
实际上包含一个范围的值。如果未设置 ColumnsCount 属性,将它们分配给 ListBox 的 List 属性 应该会失败。从您的代码中看不出这一点。我们也无法判断 x1 中可用的列是否等于列表框中可用的列或代码要求的列。
列表框有行和列。鉴于您的变量 i 计算行数,您的变量 ii 应该计算列数(我会使用 R 和 C 来帮助我了解我正在做的事情)。那么,行列都算进去了,你的变量iii算什么?
所以,可以肯定是你的代码对ListBox的行列控制不够。但是,在排序之后,您可能会发现您希望分配的值不存在。因此,导致程序崩溃的那一行可能包含不止一个错误。
我想在TextBox2中输入数据,以便在ListBox1中搜索数据,但出现错误"Could not set the List property. Invalid property value"。调试“.List(iii, ii - 1) = x1(i, ii)”
我的代码
Private Sub TextBox2_Change()
Dim x1, i As Long, ii As Long, iii As Integer
x1 = [myCar]
Application.ScreenUpdating = False
With ListBox1
If TextBox2 = "" Then
.RowSource = "myCar"
Else
.RowSource = ""
For i = 1 To UBound(x1, 1)
If LCase(x1(i, 3)) Like LCase(TextBox2) & "*" Then
For ii = 1 To 12
.AddItem
.List(iii, ii - 1) = x1(i, ii)
Next
iii = iii + 1
End If
Next
End If
End With
End Sub
未声明变量 x1
。因此它应该是一个变体。 [myCar]
似乎是一个范围名称。如果是这样,如果已知其位置,则可以将其分配给 x1
。也许您的 TextBox 在工作表上并且引用确实有效。也许 x1
从那时起是空的。我建议你测试一下。
接下来将 "MyCar" 分配给 ListBox 的 RowSource 属性。如您所知,属性 包含一个字符串。如果 MyCar
是范围名称,则它不能是有效的范围地址。也许像 Range(MyCar).Address
这样的东西会起作用。 .RowSource = "myCar"
只是将单词 "MyCar" 分配给 RowSource,这应该会失败。
在 For i = 1 To UBound(x1, 1)
中,您现在期望 x1
是一个数组。也许 x1 = [myCar]
等同于 ActiveSheet.Range(MyCar).Value
。我不会使用该语法,但您已经在上面检查了它的功能。
假设 x1
实际上包含一个范围的值。如果未设置 ColumnsCount 属性,将它们分配给 ListBox 的 List 属性 应该会失败。从您的代码中看不出这一点。我们也无法判断 x1 中可用的列是否等于列表框中可用的列或代码要求的列。
列表框有行和列。鉴于您的变量 i 计算行数,您的变量 ii 应该计算列数(我会使用 R 和 C 来帮助我了解我正在做的事情)。那么,行列都算进去了,你的变量iii算什么?
所以,可以肯定是你的代码对ListBox的行列控制不够。但是,在排序之后,您可能会发现您希望分配的值不存在。因此,导致程序崩溃的那一行可能包含不止一个错误。