excel - 在 Excel 中的 ListObject 中查找事件单元格的列名

标签 excel vba

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

enter image description here

在 VbA 中,我可以使用 ListObject("table1").ListRows 访问行和列或 ListObject("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

最佳答案

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

缺点:仅固定到表“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

关于excel - 在 Excel 中的 ListObject 中查找事件单元格的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47443844/

相关文章:

Excel 电力查询 : Parameter value from certain cell

excel - 将记录集数据复制到多个工作表中以避免Excel VBA中最大行数限制的问题

VBA-Excel : Filling forms in an IE Window

vba - MS EXCEL VBA 中的 Web 查询

c++ - 带有 C++ DLL 的 Excel-VBA 有时会崩溃

excel - 使用 Excel VBA 抓取 HTML 时的 #N/A 值

php - Excel 仅导出每周门票(支持门票网站) - Laravel

c# - 将 excel 数据粘贴到空白 DataGridView - 索引超出范围异常

excel - Excel VBA错误类型 '13'类型不匹配

excel - 使用 F8 单步执行代码会突然执行所有代码