J'essaie de faire référence à une cellule d'un tableau Excel en utilisant le nom de l'en-tête du tableau et le numéro de ligne à l'aide de VBA.
Est-ce que c'est possible?
Dans votre exemple, quelque chose comme ceci:
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)
Une réponse plus courte est:
MsgBox [MyTable].Cells(2, [MyTable[MyColumn]].Column)
Beaucoup plus propre et plus facile!
Il me semble que la solution @Salam Morcos ne donnera pas une réponse appropriée. Si la table commence à partir de la cellule A2
, l'état [MyTable[FirstColumnName]].Column
donnerait la valeur 2. La solution appropriée serait:
MsgBox [MyTable].Cells(2, [MyTable].Column-[MyTable[MyColumn]].Column + 1)