在Excel中查找ListObject中活动单元格的列名

在Excel中查找ListObject中活动单元格的列名,excel,vba,Excel,Vba,我在Excel中将一个表定义为ListObject: 在VbA中,我可以使用ListObject(“table1”)访问行和列。ListRows或ListObject(“table1”)。ListColumns 在我的一个SUB中,我不想知道活动单元格的列名。因为这些列可以移动,所以我希望这是动态的 例如,在前一幅图中,假设我单击了第三列的一个单元格。 我希望有一个函数告诉我当前ListObject中与该单元格关联的列名 在这种情况下,它将返回行描述。 我尝试使用间谍来查找一个对象路径,该路径

我在Excel中将一个表定义为ListObject:

在VbA中,我可以使用
ListObject(“table1”)访问行和列。ListRows
ListObject(“table1”)。ListColumns

在我的一个SUB中,我不想知道活动单元格的列名。因为这些列可以移动,所以我希望这是动态的

例如,在前一幅图中,假设我单击了第三列的一个单元格。 我希望有一个函数告诉我当前ListObject中与该单元格关联的列名

在这种情况下,它将返回
行描述。

我尝试使用间谍来查找一个对象路径,该路径允许我找出列名,但我找不到任何路径

在我开始构建一个函数来实现这一点之前,我想确保我没有遗漏VbA对象存储库中的任何内容

你知道是否有一种内置的方法可以找到活动单元格的列名吗

谢谢

注意:如果我没有时间创建一个函数,我会在这里发布它

编辑 以下是我到目前为止的发现:


当ListObject不是从列A开始时,您的方法可能会出现问题

缺点:仅固定在表“tMain”上,不能用于任何其他表

您可以尝试此操作(如果目标单元格多于1个,则仅使用左上角的单元格):


Thx PatricK用于更正,这样肯定更有用!
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
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