excel 如何使用DataBodyRange获取行号

rvpgvaaj  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(109)

我正在尝试获取partNum所在的行号。partNum位于第42行。然而,当我运行我的代码时,我得到了41。我在这里看到了一个例子,但后来我遇到了这个问题。我不确定我是否错过了什么。

Function FindRFIDCode(ByVal partNum As String) As Integer

    FindRFIDCode = 0
    Dim matchResult As Variant
    Dim tbl As ListObject
    Set tbl = Range("CombinedTapeInfo").ListObject
    
    matchResult = Application.Match(partNum, tbl.ListColumns(1).DataBodyRange, 0)
    
    If IsError(matchResult) Then
        FindRFIDCode = 0
    Else
        FindRFIDCode = matchResult
    End If
    
End Function

字符串

rqdpfwrv

rqdpfwrv1#

我是新来的,我试图引导你走上正确的道路。如果引用的是表,则应使用表名或索引。结果41是表行的索引号,即databodyrange,没有表头。确保声明的变量与数据(字符串,整数)一致。我写了一些额外的代码来在D2中打印结果,并使用C2作为要查找的数字的输入范围。

Sub Test()
Dim partNum As String
    partNum = ThisWorkbook.Worksheets(1).Range("C2")
Dim i As Integer
    i = FindRFIDCode(partNum)
    ThisWorkbook.Worksheets(1).Range("D2") = i
End Sub

Function FindRFIDCode(ByVal partNum As String) As Integer

FindRFIDCode = 0
Dim matchResult As Variant
Dim iRow As Integer
Dim tbl As ListObject
'Set tbl = Range("CombinedTapeInfo").ListObject
Set tbl = ThisWorkbook.Worksheets(1).ListObjects("tbl_Fruits")
matchResult = Application.Match(partNum, tbl.ListColumns(1).DataBodyRange, 0)
iRow = tbl.ListColumns(1).DataBodyRange(matchResult).Row

If IsError(matchResult) Then
    FindRFIDCode = 0
Else
    FindRFIDCode = iRow
End If

End Function

字符串

相关问题