Поиск имени заголовка столбца активной ячейки с использованием VBA в Excel - PullRequest
5 голосов
/ 04 октября 2011

У меня есть таблица, созданная из списка данных. Как найти текст заголовка каждого столбца

Table

Когда я выбираю заголовок активной ячейки, он подсвечивается оранжевым, но я хочу получить это значение с помощью Visual Basic. Я могу найти адрес листа Excel, но мне нужен заголовок столбца таблицы

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

Ответы [ 4 ]

4 голосов
/ 04 октября 2011

Возвращает заголовок столбца, если переданная ячейка находится в таблице

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
2 голосов
/ 06 июня 2013
strCurrentColName = Cells(ActiveCell.ListObject.Range.Row, ActiveCell.Column).Value
1 голос
/ 25 декабря 2012

Я искал в Интернете хороший способ найти значение заголовка для любой данной ячейки в таблице, и после небольшого мозгового штурма нашел это рабочее решение, которым, я думал, я поделюсь.

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

Если ваши заголовки не находятся в строке 1, измените 1 на любую строку, в которой они находятся.

1 голос
/ 04 октября 2011

Если под заголовком столбца вы подразумеваете ячейку в первой строке того же столбца, в которую было внесено изменение, то вы можете создать заголовок, используя ячейки, т.е.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...