首页 > 解决方案 > 如何查找()表格行?

问题描述

我试图找出一些简单的代码来将表的一行转换为数组,只使用表名和我知道的字符串在第一列。

foundRow = Worksheets("Data").ListObjects("tableName").Range.Find("searchTerm").Row + 1 'Offset 1 because of the header

myArray = Worksheets("Data").ListObjects("tableName").ListRows(foundRow).Range

我在即时窗口中测试了两行代码,它们执行了我想要的操作,但是当我将其放入代码时,我从第一行得到“运行时错误'9':订阅超出范围”。有人可以告诉我我做错了什么吗?或者也许有更好的方法来做到这一点?

标签: excelvba

解决方案


使用该DatabodyRange属性来避免尴尬的偏移来解释标题,并Match()在第一列中查找值:

Sub tester()

    Dim m, lo As ListObject, myArray

    Set lo = Worksheets("Data").ListObjects("tableName")

    m = Application.Match("searchTerm", lo.ListColumns(1).DataBodyRange, 0)

    If Not IsError(m) Then
        myArray = lo.DataBodyRange.Rows(m).Value
    End If

End Sub

推荐阅读