У меня есть лист, в котором я веду журнал изменений, которые происходят на нем, таких как данные, введенные в ячейку, удаленные данные и т. Д. Это прекрасно работает, за исключением случаев, когда происходит несколько выборок.
Например, еслиЯ выбрал B2, D2 и F2 и удалил содержимое ячеек. Событие изменения рабочего листа примет изменение только для первой ячейки, B2.Так что я понятия не имею, что случилось с другими клетками.
Есть ли способ, которым я могу обойти это и либо заставить его регистрировать изменения рабочего листа для других ячеек, либо останавливать многократное удаление выборок?
Вот мой код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
Dim ws As Worksheet, iRow As Long, iCol As Long, Message As String, SheetId As String, iRowE As Long, iColE As Long, iRowB As Long, iColB As Long
Set ws = Sh
SheetId = Replace(ws.Name, " ", "")
SheetId = Left(SheetId, 2) & Right(SheetId, 2)
iRowB = Target.Row
iColB = Target.Column
iRowE = iRowB + Target.Rows.Count - 1
iColE = iColB + Target.Columns.Count - 1
Message = Format(Now(), "ddHHmmss") & Application.UserName & "-" & SheetId
For iRow = iRowB To iRowE
For iCol = iColB To iColE
Message = Message & "|" & Format(iRow, " 0") & Format(iCol, " 0") & "|" & CStr(ws.Cells(iRow, iCol).Text)
Next iCol
Next iRow
If Not FileExists("L:\HC\" & ThisWorkbook.Name & Format(Now(), "YYYYMM") & ".Log") Then
Call LogIt("L:\HC\" & ThisWorkbook.Name & Format(Now(), "YYYYMM") & ".Log", "ddHHmmssUSER-sheet|row col|value|row col|value")
End If
Call LogIt("L:\HC\" & ThisWorkbook.Name & Format(Now(), "YYYYMM") & ".Log", Message)
End Sub