У меня есть рабочий лист, в котором регистрируются изменения, внесенные пользователями в ячейки. Это происходит следующим образом
Public OldVal As String
Public NewVal As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub
OldVal = Target.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LDate As String
If Target.Cells.Count > 1 Then Exit Sub
NewVal = Target.Value
Sheets("corrections").Cells(Rows.Count, "A").End(xlUp)(2).Value = Now & "_Sheet " & ActiveSheet.Name & " Cell " & Target.Address(0, 0) & " was changed from '" & OldVal & "' to '" & NewVal & "'"
OldVal = ""
NewVal = ""
End Sub
Проблема в том, что по какой-то причине он никогда не будет отображать предыдущее значение. он выведет его только потому, что ячейка листа FA B5 была изменена с '' на '12', даже если, например, 10 было в ячейке ранее.
Мне также было любопытно узнать, есть ли способ сделать так, чтобы этот код не работал постоянно. Я бы предпочел иметь кнопку, которую вы нажимаете, и в этот момент она инициирует и начинает регистрировать изменения.
Спасибо
Target.Cells.Countможет привести к ошибке. Вместо этого используйтеTarget.Cells.CountLarge. - person Siddharth Rout   schedule 04.10.2013