【问题标题】:How to return a header name based on a cell value? VBA如何根据单元格值返回标题名称? VBA
【发布时间】:2023-01-25 00:51:02
【问题描述】:

我创建了一个日志详细信息表来跟踪在 Excel 电子表格中所做的更改,但我的代码没有返回列/标题名称。

列名应返回发生更改的列。在这种情况下,它将是员工身份。

这就是我的 excel 文件的样子。

这是我的 VBA 代码

Dim lastRng

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If ActiveSheet.Name <> "logdetails" Then

        Application.EnableEvents = False
        
        Sheets("logdetails").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = ActiveSheet.Name & "-" & Target.Address(0, 0)
        Sheets("logdetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 1).Value = Target.Address
        Sheets("logdetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 2).Value = lastRng
        Sheets("logdetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 3).Value = Target.Value
        Sheets("logdetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 4).Value = Environ("username")
        Sheets("logdetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 5).Value = Now
        Sheets("logdetails").Columns("A:H").AutoFit
        
        Application.EnableEvents = True

    End If
End Sub

Private Sub Workbook_Open()
    Set lastRng = ActiveCell
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    lastRng = Target.Value
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    假设列名位于第 1 行:

    Dim colName As String
    colName = ActiveSheet.Cells(1, Target.Column)
    Sheets("logdetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 1).Value = colName 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 2019-08-17
      • 1970-01-01
      相关资源
      最近更新 更多