我在Excel中将表定义为ListObject:
在VbA中,我可以使用ListObject("table1").ListRows
或ListObject("table1").ListColumns
在我的一个潜艇中,我不知道活动单元的列名。因为列可以移动,我希望它是动态的。
例如,在上一张图片中,我们说我点击了第三列的单元格。 我希望有一个函数告诉我当前ListObject中与该单元格关联的列名。
在这种情况下,它将返回Line Desc.
我试图使用间谍找到一个允许我找出列名的对象路径,但我找不到任何。
在我开始构建一个能够做到这一点的功能之前,我想确保我在VbA对象存储库中没有错过任何内容。
知道是否有内置方法可以找到活动单元格的列名?
由于
注意:如果我没时间并创建一个函数,我会在这里发布。
修改 这是我到目前为止所发现的:
Function ColumnName(byVal Target as Range)
If Sheets("Equipements").Listobjects("tMain").Active then
ColumnName = ListObjects("tMain").HeaderRowRange.Cells(1, Target.Column).Value
End If
End Function
答案 0 :(得分:1)
当ListObject不从A列开始时,会出现您的方法的可能问题。
Con:仅固定到表“tMain”,不能在任何其他表上使用。
你可以试试这个(如果Target超过1个单元格,只使用左上角的单元格):
Option Explicit
Function ColumnName(ByRef Target As Range) As String
If Not Target.ListObject Is Nothing Then
ColumnName = Intersect(Target.ListObject.HeaderRowRange, Target.EntireColumn).Value
Else
ColumnName = ""
End If
End Function