显示基于另一个“行”值的单元格的值。 日志跟踪

我正在尝试创build一个电子表格版本跟踪,但有一个单独的工作表捕获到第一个工作表的变化,需要包括一些额外的信息。 这是当前正在运行的脚本。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name = "Log" Then Exit Sub Application.EnableEvents = False On Error Resume Next With Sheets("Log").Cells(Rows.Count, 1).End(xlUp) .Offset(1, 0).Value = Environ("UserName") .Offset(1, 1) = Sh.Name .Offset(1, 3) = Target.Address .Offset(1, 4) = "'" & Target.Formula .Offset(1, 5) = Previous Previous = "" .Offset(1, 6) = Now End With Application.EnableEvents = True 

结束小组

被修改的单元格在列3中被捕获为Target.Address。 我希望能够引用Target.Address的行,并显示列A的值在第一张表中的同一行。 。

例如:在工作表1上修改单元格D7。工作表显示$ D $ 7作为目标地址的值。 在另一个单元格中,我想知道A7的值是多less,目标地址的行是7.它将坐在从示例中缺less的.Offset(1,2)=点,因为我尝试了不同的公式而不是使用vba。

试图寻找和难以正确发现或措辞的问题,我害怕。

任何build议将不胜感激! 先谢谢你,

处理多个更改的单元格

 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Const LOG_SHEET As String = "Log" Dim c As Range If Sh.Name = LOG_SHEET Then Exit Sub For Each c In Target.Cells With Sheets(LOG_SHEET).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).EntireRow .Cells(1).Value = Environ("UserName") .Cells(2).Value = c.EntireRow.Cells(1).Value 'server name .Cells(3).Value = Sh.Name .Cells(4) = c.Address(False, False) .Cells(5) = "'" & c.Value .Cells(6) = Now End With Next c End Sub 

您不需要在这里禁用事件,因为“如果日志表退出”行处理。

您只需使用Target.Value2属性即可解决更改的值。 你的脚本看起来像这样:

 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name = "Log" Then Exit Sub Application.EnableEvents = False On Error Resume Next With Sheets("Log").Cells(Rows.Count, 1).End(xlUp) .Offset(1, 0).Value = Environ("UserName") .Offset(1, 1) = Sh.Name .Offset(1, 2) = Target.Value2 .Offset(1, 3) = Target.Address .Offset(1, 4) = "'" & Target.Formula .Offset(1, 5) = Previous Previous = "" .Offset(1, 6) = Now End With Application.EnableEvents = True End Sub