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

问题描述 投票:0回答:1

我在 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
excel vba
1个回答
5
投票

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

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

您可以尝试这个(如果目标超过 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
© www.soinside.com 2019 - 2024. All rights reserved.