【问题标题】:How to fix "Run-time error '380': Could not set the RowSource property."如何修复“运行时错误 '380':无法设置 RowSource 属性。”
【发布时间】:2019-11-06 06:55:08
【问题描述】:

我对不同的工作表使用了完全相同的代码,它可以正常工作,但是当我为同一个工作簿中的一组新工作表编辑它时,出现了运行时错误。

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(Kit_search!$B$3,0,0,COUNTA(Kit_search!$C:$C)-1,6)

“Kit_database”表包含我要搜索的所有不同类型的套件。 “Kit_search”表是所有与搜索的套件描述匹配的结果的占位符。 OFFSET 函数拉取数据“Kit_search”,应该用txtKitKeyword.Value的搜索结果填充

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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这取决于“KitKit”是什么。您需要设置 RowSourceType 以正确解释该值。如果将其设置为“值列表”,则该列表将仅包含“KitKit”。所以我必须假设您正在尝试使用 Table\Query 或 Field List。听起来您在说“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

    【讨论】:

    • 感谢您的反馈。根据您的评论,我的名称管理器中有“KitKit”,它指的是我提到的 OFFSET 函数。我知道这个“KitKit”是一个名为“Kit_search”的不同工作表上的“表/查询或字段列表”。我已经尝试过您的建议,但出现了另一个错误:Run-time error '13' Type Mismatch.
    • 这就是进步。现在您需要使您传递给行源的类型与您声明的类型相匹配。您的公式不是“表名、查询名或 SQL 语句。”,它是一个公式。所以“KitKit”需要是一个表的名称,而不是一个命名范围。删除该命名范围。选择要使用的数据,然后按“CRTL+T”制作表格。然后给表格命名为“KitKit”
    • 值得一提的是我正在使用动态范围吗?我不确定这是否会改变事情的运作方式。当我在我的 Kit_database 中搜索套件描述时,任何具有匹配关键字的套件都将放置在 Kit_search 中,其中 lstKitResult 应该填充 UserForm。
    • 所以RowSource 需要指向从数据库中提供列表的查询。然后您可以将您的类型设置为查询,定位查询。繁荣。没有更多的公式,没有更多的偏移,没有更多的错误。
    • 感谢您的帮助。我能够让 RowSource 直接引用数据库表并填充我的列表框。但是我仍然需要按关键字搜索,我可以通过什么方式将其包含在代码中?
    猜你喜欢
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    相关资源
    最近更新 更多