Прикрепленный код отлично подходит для однократных изменений листа1, сохраненных в журнале на листе9. Но мне нужно также найти способ регистрировать все изменения, если есть копия и вставка значений в диапазон. Таким образом, каждая ячейка, измененная в копии и вставке, записывается.
Dim vOldVal
Private Sub Worksheet_Change(ByVal Target As Range)
Dim bBold As Boolean
Dim col
Dim row
If Target.Cells.Count > 1 Then Exit Sub
On Error Resume Next
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
If IsEmpty(vOldVal) Then vOldVal = "Empty Cell"
bBold = Target.HasFormula
With Sheet9
With .Cells(.Rows.Count, 1).End(xlUp)(2, 1)
.Value = vOldVal
row = Target.row
col = Target.Column
.Offset(0, 3) = Sheet1.Cells(row, 1).Value 'id
.Offset(0, 4) = Sheet1.Cells(row, 2).Value 'name
.Offset(0, 5) = Sheet1.Cells(1, col).Value 'column name
With .Offset(0, 1)
If bBold = True Then
.ClearComments
.AddComment.Text Text:= _
"Dev:" & Chr(10) & "" & Chr(10) & _
"Bold values are the results of formulas"
End If
.Value = Target
.Font.Bold = bBold
End With
.Offset(0, 2) = Date & " " & Time
End With
.Cells.Columns.AutoFit
End With
vOldVal = vbNullString
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
On Error GoTo 0
Sheet10.PivotTables("Log_Pivot").PivotCache.Refresh
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
vOldVal = Target
End Sub