在 VBA 中对表头使用 MATCH 函数

问题描述

我正在尝试使用 MATCH 函数来确定一行。我有几个孔,其中一些孔穿过许多部分(例如:孔 1 可以穿过两个部分,但旁边的孔 2 可以穿过四个部分)。每层的直径可能不同,并且可能会有很大差异。我需要为图层拉出正确的直径。我的代码一直工作到我试图让 j 等于下一个孔所在的行号的那一行。我认为我的问题在于范围。我想使用表头,因为输入表的大小可能因项目而异。

我更新了代码以反映评论中的建议以及我能够在 MATCH 函数中使用表头的研究。现在的问题是它将行拉到我预期的下方。使用示例表上的代码 j ,MATCH 返回的行是 5,这是第 3 洞的一行,除非它计算标题行,但我认为使用 dataBodyRange 会排除该行。请注意,我的表格从单元格 A5 开始。我想我还有一个参考问题。

Example Table

Private Sub UpdatePitchDia_Click()
'Want to use diameters from the same part

Dim i
Dim j
Dim LastRowIn
Dim Hole_Num
Dim Incoming_Dia
Dim Hole_L
Dim Hole_R
Dim Hole_U
Dim Hole_D
Dim Stack_Up
Dim Stack_Up_L
Dim L_Dia

Dim tbl_In As ListObject
Dim Hole As Range

Set tbl_In = ThisWorkbook.Sheets("Input").ListObjects("tbl_Input")
Set Hole = tbl_In.ListColumns(1).Range

LastRowIn = tbl_In.DataBodyRange.Rows.Count

i = 1
j = 0


 
For i = 1 To LastRowIn Step 1

    Hole_L = [tbl_Input].Cells(i,4)
    
    If Not IsEmpty(Hole_L) Then  'Not all holes have adjacent holes
            
        'Need to make sure that the part layers are the same
        j = WorksheetFunction.Match(Hole_L,Hole,0)
        
        'MsgBox "Row of Hole Left (" & Hole_L & ") is " & j
        
        Stack_Up = [tbl_Input].Cells(i,2)
        Stack_Up_L = [tbl_Input].Cells(j,2)
        
        If Stack_Up <> Stack_Up_L Then
            j = j + 1
            Stack_Up_L = [tbl_Input].Cells(j,2)
            
            Else: L_Dia = [tbl_Input].Cells(j,3)
        End If
    End If
        
Next
End Sub

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)