У меня есть этот код, который я использую для вызова старых и новых значений. Однако теперь у меня возникла проблема, когда, если пользователь просто выделит и нажмет «Удалить», он запустится и заметит это изменение, однако по какой-то причине он запустит еще несколько экземпляров того же запроса. Есть ли способ, чтобы он запускался только один раз? Спасибо
Public OldValues As New Collection
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Sheets("Pagination").Range("J11") <> "Yes" Then Exit Sub
'Copy old values
Set OldValues = Nothing
Dim c As Range
For Each c In Target
OldValues.Add c.Value, c.Address
Next c
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Sheets("Pagination").Range("J11") <> "Yes" Then Exit Sub
On Local Error Resume Next ' To avoid error if the old value of the cell address you're looking for has not been copied
Dim c As Range
For Each c In Target
Sheets("corrections").Cells(Rows.Count, "A").End(xlUp)(2).Value = Now & " Sheet " & ActiveSheet.Name & " Cell " & Target.Address(0, 0) & " has a new value of " & c.Value & "; old value was " & OldValues(c.Address)
Next c
'Copy old values (in case you made any changes in previous lines of code)
Set OldValues = Nothing
For Each c In Target
OldValues.Add c.Value, c.Address
Next c
End Sub
change event sub
и попробуйте отладить свой код с помощьюF8 key
... шаг за шагом, надеюсь, вы разберетесь с этим. - person Kazimierz Jawor   schedule 09.10.2013