如何引用Excel表格中的特定行

如何引用Excel表格中的特定行,excel,vba,Excel,Vba,我试图引用excel表中的特定行,但得到“应用程序定义或对象定义错误”。这是一句话: ActiveWorkbook.Worksheets("MatchedDeals").Cells(i, "A") = _ ActiveWorkbook.Worksheets("Data"). _ Range("Table_ExternalData_1[[" & iStartingRow & "],[TransID]]") 其中,iStartingRow包含要引用的行号,Trans

我试图引用excel表中的特定行,但得到“应用程序定义或对象定义错误”。这是一句话:

ActiveWorkbook.Worksheets("MatchedDeals").Cells(i, "A") = _
    ActiveWorkbook.Worksheets("Data"). _
    Range("Table_ExternalData_1[[" & iStartingRow & "],[TransID]]")

其中,
iStartingRow
包含要引用的行号,
TransID
表示列。我做错了什么?

不要通过一个范围来寻址表,而是尝试寻址表(在VBA中,它是一个
ListObject
):

试试下面的代码

Sub sample()

    iStartingRow = 2
    Set d = Sheets("Data").ListObjects("Table_ExternalData_1")
    Worksheets("MatchedDeals").Cells(i, "A")  = d.ListRows(1).Range.Cells(iStartingRow, 1)

End Sub

好吧,你缺少了一个引号,这就在例子中。代码没有引号。“我刚刚纠正了它。@Chuff:我不久前发现了它们——现在基本上都是用表格做的!”!imo唯一需要注意的是,当表为空时,
DataBodyRange
Nothing
(这是有意义的,但如果您想确定大小等,会导致错误),因此有些代码有点臃肿。但是有一个小的表包装器类也解决了这个问题…@Lukasz你可以试试这个。
Sub sample()

    iStartingRow = 2
    Set d = Sheets("Data").ListObjects("Table_ExternalData_1")
    Worksheets("MatchedDeals").Cells(i, "A")  = d.ListRows(1).Range.Cells(iStartingRow, 1)

End Sub