【问题标题】:Find column name of active cell within ListObject in Excel在 Excel 中的 ListObject 中查找活动单元格的列名
【发布时间】:2017-11-23 06:24:20
【问题描述】:

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

在 VbA 中,我可以使用 ListObject("table1").ListRowsListObject("table1").ListColumns 访问行和列

在我的一个潜艇中,我不知道活动单元格的列名。而且因为列可以移动,所以我希望它是动态的。

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

在这种情况下,它将返回 Line Desc.

我尝试使用 spy 来查找可以让我找出列名的对象路径,但我找不到。

在我开始构建一个可以做到这一点的函数之前,我想确保我没有遗漏 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】:

    当 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
    

    【讨论】:

    • 感谢 Patrick 的修正,这样肯定更有用!
    猜你喜欢
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多