首页 > 解决方案 > 将编码放入 ListObject 表中

问题描述

下面的 VBA 代码向下查找表中的 B 列。当在 B 列中识别出一个值 (60) 时,我将 C 列中的相邻值复制到 D 列中。我尝试了一个偏移量,当不在正式的 ListObject 表中时它可以正常工作,但是当我收到一条错误消息时在“无效或不合格的参考”表中。如何更新 VBA 代码以在 Excel 表中工作?我四处搜索并尝试了一些更改,但仍然出现错误。

Sub TableFind()

Dim LastRow As Long
Dim rng As Range, C As Range

With Worksheet.ListObjects("myTable")
    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
    Set rng = .Range("B2:B" & LastRow)

        For Each C In rng
        If C.Value = "60" Then
            C.Offset(, 3).Copy
            C.Offset(, 4).PasteSpecial Paste:=xlPasteValues
        End If
    Next C
End With

End Sub

标签: excelvba

解决方案


无需查找表中的最后一行;DataBodyRange指的是表格的主体,所以只需使用它。

假设您的表从 A 列开始,您可能会执行以下操作:

With Worksheet.ListObjects("myTable")
    For Each C in .ListColumns(2).DataBodyRange
        If C.Value = "60" Then
            C.Offset(, 2).Value = C.Offset(,1).Value
        End If
    Next C
End With

推荐阅读