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

时间:2017-11-22 21:03:19

标签: excel vba

我在Excel中将表定义为ListObject:

enter image description here

在VbA中,我可以使用ListObject("table1").ListRowsListObject("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

1 个答案:

答案 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