Ответ 1
В вашем примере что-то вроде этого:
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)
Я пытаюсь обратиться к ячейке в таблице excel, используя имя заголовка таблицы и номер строки, используя VBA.
Возможно ли это?
В вашем примере что-то вроде этого:
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
statment [MyTable[FirstColumnName]].Column
, она даст значение 2. Правильное решение:
MsgBox [MyTable].Cells(2, [MyTable].Column-[MyTable[MyColumn]].Column + 1)