我正在尝试使用表头名称和使用VBA的行号来引用excel表中的单元格。
这是可能的吗?
答案 0 :(得分:29)
在您的示例中,类似这样的内容:
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)
答案 1 :(得分:11)
简短的回答是:
MsgBox [MyTable].Cells(2, [MyTable[MyColumn]].Column)
更清洁,更轻松!
答案 2 :(得分:3)
有什么理由应该避免使用这种方法吗?
ThisWorkbook.Worksheets("MyWksht").Range("TableName[ColumnTitle]").Cells(RowNumber)
在我看来,这是最简单的答案。
答案 3 :(得分:2)
在我看来,@ Saram Morcos解决方案无法给出正确答案。如果表格从单元格A2
开始,则[MyTable[FirstColumnName]].Column
会给出值2.正确的解决方案是:
MsgBox [MyTable].Cells(2, [MyTable].Column-[MyTable[MyColumn]].Column + 1)
答案 4 :(得分:0)
就这么简单。如果按列名调用,则该范围的列索引将为1,因此:
msgbox ActiveSheet.ListObjects(1).ListColumns("header4").DataBodyRange(2,1).value
答案 5 :(得分:0)
更简单,更动态:
ThisWorkbook.Worksheets("WorkSheet_Name").Range("Table_Name").Rows(Table_row_number).Select
答案 6 :(得分:-1)
如果要简短地写:
[MyTable[header4]].Rows(2)