我试图通过使用表标题名称和使用 VBA 的行号来引用 Excel 表中的单元格。
我怎样才能做到这一点?
在您的示例中,如下所示:
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)
一个简短的答案是:
MsgBox [MyTable].Cells(2, [MyTable[MyColumn]].Column)
更清洁,更容易!
有什么理由应该避免使用这种方法?
ThisWorkbook.Worksheets("MyWksht").Range("TableName[ColumnTitle]").Cells(RowNumber)
在我看来,这似乎是最简单的答案。
在我看来,@Salam Morcos 解决方案不会给出正确的答案。如果表格从单元格A2
语句开始,[MyTable[FirstColumnName]].Column
则值为 2。正确的解决方案是:
MsgBox [MyTable].Cells(2, [MyTable].Column-[MyTable[MyColumn]].Column + 1)
就这么简单。如果您按列名称调用,则该范围的列索引将为 1,因此:
msgbox ActiveSheet.ListObjects(1).ListColumns("header4").DataBodyRange(2,1).value
如果你想写得简短:
[MyTable[header4]].Rows(2)
更简单,动态:
ThisWorkbook.Worksheets("WorkSheet_Name").Range("Table_Name").Rows(Table_row_number).Select