我为不同的工作表使用了下面完全相同的代码,并且可以正常工作,但是当我在同一工作簿中为一组新的工作表编辑它时,会出现运行时错误。
Private Sub cmdSearchKitDesc_Click()
Dim RowNum As Long
Dim SearchRow As Long
RowNum = 3
SearchRow = 3
Worksheets("Kit_database").Activate
Do Until Cells(RowNum, 1).Value = ""
If InStr(1, Cells(RowNum, 3).Value, txtKitKeyword.Value, vbTextCompare) > 0 Then
Worksheets("Kit_search").Cells(SearchRow, 2).Value = Cells(RowNum, 2).Value
Worksheets("Kit_search").Cells(SearchRow, 3).Value = Cells(RowNum, 3).Value
Worksheets("Kit_search").Cells(SearchRow, 4).Value = Cells(RowNum, 4).Value
Worksheets("Kit_search").Cells(SearchRow, 5).Value = Cells(RowNum, 6).Value
Worksheets("Kit_search").Cells(SearchRow, 6).Value = Cells(RowNum, 8).Value
Worksheets("Kit_search").Cells(SearchRow, 7).Value = Cells(RowNum, 9).Value
SearchRow = SearchRow + 1
End If
RowNum = RowNum + 1
Loop
If SearchRow = 2 Then
MsgBox "No kits were found that match your criteria."
Exit Sub
End If
lstKitResult.RowSource = "KitKit"
End Sub
我将RowNum更改为3以匹配工作表的列(在这种情况下,我想搜索工具包的描述)我想分别在字符串中搜索。我已经仔细检查过它所使用的图纸和偏移功能是否正确命名。
我要填充用途的列表框,
lstKitResult.RowSource = "KitKit"
,其中“ KitKit”使用以下OFFSET公式,
=OFFSET(Kit_search!$B$3,0,0,COUNTA(Kit_search!$C:$C)-1,6)
“ Kit_database”工作表包含了我要搜索的所有不同类型的工具包。 “ Kit_search”表是所有与搜索到的试剂盒描述匹配的结果的占位符。 OFFSET函数提取应使用txtKitKeyword.Value
我尝试使用不同的列号和工作表名称来确保所有内容匹配,但始终会出现运行时错误。
答案 0 :(得分:0)
这取决于“ KitKit”是什么。您需要设置RowSourceType才能正确解释该值。如果将其设置为“值列表”,则列表将仅包含“ KitKit”。因此,我必须假定您正在尝试使用“表\查询”或“字段列表”。听起来您在说“ KitKit”是一个指向偏移公式的命名范围。那确实是一个错误。 “ KitKit”的结果必须包含和答案的格式必须与RowSourceType相匹配。
lstKitResult.RowSourceType = "Field List"
从文档中:
RowSource属性设置取决于RowSourceType属性 设置。对于此RowSourceType设置,请输入此RowSource设置
Table/Query A table name, query name, or SQL statement.
Value List A list of items with semicolons (;) as separators.
Field List A table name, query name, or SQL statement.
来源:https://docs.microsoft.com/en-us/office/vba/api/access.listbox.rowsource