Я гораздо хуже начинающих, когда дело доходит до программирования, так как я нахожу код VBA в сети и пытаюсь перенастроить его для своих целей.
Я использую приведенный ниже код для захвата метки времени и имени пользователя, когданекоторые ячейки изменены, что работает отлично, проблема возникает, когда я пытаюсь добавить или удалить строки.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim ThisRow As Long ' make sure to declare all the variables and appropriate types
ThisRow = Target.Row
If Target.Column >= 1 And Target.Column <= 1 Then
Dim sOld As String, sNew As String
sNew = Target.Value 'capture new value
With Application
.EnableEvents = False
.Undo
End With
sOld = Target.Value 'capture old value
Target.Value = sNew 'reset new value
If sOld <> sNew Then
' time stamp & username corresponding to cell's last update
Range("L" & ThisRow).Value = Now & Environ("username")
Range("L:L").EntireColumn.AutoFit
End If
Application.EnableEvents = True
End If
End Sub
Ошибка времени выполнения «13»:
Появляется окно Несоответствие типов.Если я нажму конец, строка будет добавлена или удалена, но если я добавлю «Возобновить при ошибке» Рядом с кодом, всплывающее окно не появится, но строка также не будет удалена или добавлена.
Есть ли способ это исправить?Или я обречен нажимать клавишу end каждый раз, когда мне нужно добавить или удалить строку?
Изменить: Забыл упомянуть, что отладка выдвигает на первый план sNew = Target.Value 'capture new value
в качестве проблемы.