Код ниже копирует данные с одного листа на лист "LogDetails". Это обычно работает без проблем, за исключением случаев, когда я go на лист "LogDetails", а затем оставить его. Я получаю
Ошибка выполнения 1004
, указывающую, что лист может быть защищен, даже если я сниму защиту листа. Когда я проверяю это в ближайшем окне, лист незащищен. В чем может быть проблема, если рабочая таблица не защищена?
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If ActiveSheet.Name <> "LogDetails" Then
Sheets("LogDetails").Unprotect
Application.EnableEvents = False
Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = Target.Address(0, 0)** Error hits here
Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 1).Value = Target.Value
Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 2).Value = Environ("username")
Sheets("LogDetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 3).Value = Now
Sheets("LogDetails").Columns("A:D").AutoFit
Application.EnableEvents = True
End If
End Sub
Рекомендуемые изменения:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim shL As Worksheet
Set shL = Sheets("LogDetails")
If ActiveSheet.Name <> "LogDetails" Then
shL.Unprotect
Application.EnableEvents = False
shL.Range("A" & shL.Rows.Count).End(xlUp).Offset(1, 0).Value = Target.Address(0, 0) **error hits here still
shL.Range("A" & shL.Rows.Count).End(xlUp).Offset(0, 1).Value = Target.Value
shL.Range("A" & shL.Rows.Count).End(xlUp).Offset(0, 2).Value = Environ("username")
shL.Range("A" & shL.Rows.Count).End(xlUp).Offset(0, 3).Value = Now
shL.Columns("A:D").AutoFit
Application.EnableEvents = True
End If
End Sub