簡體   English   中英

在Excel中使用VBA查找活動單元的列標題名稱

[英]Finding Active cell's column header name using VBA in excel

我有一個從數據列表創建的表。 如何查找每列的標題文本

表

當我選擇activecell的標題高亮到橙色但我想使用visual basic檢索該值。 我能找到excel表的地址,但我需要表的列標題

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

如果傳遞的單元格在表中,這將返回列標題

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
strCurrentColName = Cells(ActiveCell.ListObject.Range.Row, ActiveCell.Column).Value

我在網上尋找一種很好的方法來找到表格中任何給定單元格的標題值,經過一些小小的頭腦風暴后我想到了這個有用的解決方案。

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

如果您的標題不在第1行,則將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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM