29

我试图通过使用表标题名称和使用 VBA 的行号来引用 Excel 表中的单元格。

我怎样才能做到这一点?

在此处输入图像描述

4

7 回答 7

45

在您的示例中,如下所示:

Dim tb As ListObject
'assumes Table is the first one on the ActiveSheet
Set tb = ActiveSheet.ListObjects(1)
MsgBox tb.DataBodyRange.Cells(2, tb.ListColumns("header4").Index)
于 2013-09-15T11:56:19.197 回答
17

一个简短的答案是:

MsgBox [MyTable].Cells(2, [MyTable[MyColumn]].Column)

更清洁,更容易!

于 2015-05-22T14:24:39.710 回答
7

有什么理由应该避免使用这种方法?

ThisWorkbook.Worksheets("MyWksht").Range("TableName[ColumnTitle]").Cells(RowNumber)

在我看来,这似乎是最简单的答案。

于 2018-09-05T14:43:57.753 回答
4

在我看来,@Salam Morcos 解决方案不会给出正确的答案。如果表格从单元格A2语句开始,[MyTable[FirstColumnName]].Column则值为 2。正确的解决方案是:

MsgBox [MyTable].Cells(2, [MyTable].Column-[MyTable[MyColumn]].Column + 1)
于 2018-01-11T10:58:52.187 回答
2

就这么简单。如果您按列名称调用,则该范围的列索引将为 1,因此:

msgbox ActiveSheet.ListObjects(1).ListColumns("header4").DataBodyRange(2,1).value
于 2020-08-19T06:09:05.813 回答
0

如果你想写得简短:

[MyTable[header4]].Rows(2)
于 2020-11-13T11:27:50.870 回答
0

更简单,动态:

ThisWorkbook.Worksheets("WorkSheet_Name").Range("Table_Name").Rows(Table_row_number).Select
于 2020-10-07T17:27:00.917 回答