Excel 如何修复“运行时错误“380”:无法设置RowSource属性

Excel 如何修复“运行时错误“380”:无法设置RowSource属性,excel,vba,Excel,Vba,我在不同的工作表中使用了完全相同的代码,并且工作正常,但是当我在同一工作簿中为一组新工作表编辑代码时,会出现运行时错误 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 InS

我在不同的工作表中使用了完全相同的代码,并且工作正常,但是当我在同一工作簿中为一组新工作表编辑代码时,会出现运行时错误

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使用以下偏移公式, =OFFSETKit\u搜索$B$3,0,0,COUNTAKit_搜索$C:$C-1,6

Kit_数据库表包含我将从中搜索的所有不同类型的工具包。Kit_搜索表是一个占位符,用于找到与搜索的Kit描述匹配的所有结果。OFFSET函数提取应该填充txtKitKeyword.Value搜索结果的数据包搜索


我尝试了不同的列号和工作表名称以确保匹配,但运行时错误总是出现。

这取决于KitKit是什么。您需要设置RowSourceType以正确解释该值。如果将其设置为值列表,则列表将仅包含KitKit。因此,我必须假设您正在尝试使用表\查询或字段列表。听起来像是说KitKit是一个指向偏移公式的命名范围。这确实是一个错误。KitKit的结果必须包含并格式化为与RowSourceType匹配的答案

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
lstKitResult.RowSourceType = "Field List" 
从文件中:

RowSource属性设置取决于RowSourceType属性 背景对于此RowSourceType设置,请输入此RowSource设置


来源:

感谢您的反馈。根据您的评论,我的名字中有KitKit Manager,它指的是我提到的偏移功能。我了解此KitKit是另一张名为Kit_search的工作表上的“表/查询或字段列表”。我尝试了您的建议,但出现了另一个错误:运行时错误“13”类型不匹配。这就是进度。现在需要使传递给rowsource的类型与声明的类型匹配。您的公式不是表名、查询名或SQL语句,而是公式。因此KitKit需要是表的名称,而不是命名范围。删除该命名范围。选择要使用的数据,然后按CRTL+T组合键生成表格。然后给表起一个名字kitkit值得一提的是我正在使用一个动态范围吗?我不确定这是否会改变事情的运作方式。当我在我的kit_数据库中搜索kit描述时,任何具有匹配关键字的kit都将放在kit_搜索中,lstKitResult应该填充用户表单。因此,RowSource需要指向从DB提供列表的查询。然后,您可以将类型设置为query,以查询为目标。繁荣没有更多的公式,没有更多的偏移,没有更多的错误。谢谢你的帮助。我能够让RowSource直接引用数据库表并填充我的列表框。但是我仍然需要按关键字搜索,是否可以将其包含在代码中?