在Excel中使用VBA查找活动单元的列标题名称

时间:2011-10-04 05:31:23

标签: vba excel-vba excel

我有一个从数据列表创建的表。如何查找每列的标题文本

Table

当我选择activecell的标题高亮到橙色但我想使用visual basic检索该值。  我能找到excel表的地址,但我需要表的列标题

   Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      MsgBox Target.Value 
      MsgBox ActiveCell.Address
   End Sub

4 个答案:

答案 0 :(得分:4)

如果传递的单元格在表

中,这将返回列标题
Function TableHeader(cl As Range) As Variant
    Dim lst As ListObject
    Dim strHeading As String

    Set lst = cl.ListObject

    If Not lst Is Nothing Then
        TableHeader = lst.HeaderRowRange.Cells(1, cl.Column - lst.Range.Column + 1).Value
    Else
        TableHeader = ""
    End If
End Function

答案 1 :(得分:2)

strCurrentColName = Cells(ActiveCell.ListObject.Range.Row, ActiveCell.Column).Value

答案 2 :(得分:1)

如果按列标题表示同一列中第一行中的单元格已进行更改,则可以使用单元格构建标题,即

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    MsgBox Target.Value
    MsgBox ActiveCell.Address & vbNewLine & "Column header is " & Cells(1, Target.Column)
End Sub

如果您的标题位于第2行,则可以使用Cells(2, ActiveCell.Column)

[以下评论后更新]

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim rng1 As Range
Set rng1 = Target.End(xlUp)
MsgBox "First value before a blank cell/top of sheet is " & rng1.Value
End Sub

答案 3 :(得分:1)

我在网上寻找一种很好的方法来找到表格中任何给定单元格的标题值,经过一些头脑风暴后,我想我会分享这个工作解决方案。

    Target.Offset(1 - Target.Row).Value

如果您的标题不在第1行,则将1更改为它们恰好位于的行。