Как сделать записи журнала аудита для каждой новой строки данных при множественном вводе одновременно? - PullRequest
0 голосов
/ 18 сентября 2018

Я новичок в VBA и адаптировал различные фрагменты кода с форумов.

Контрольный журнал отлично работает, я хотел, чтобы он передавал уникальный идентификатор и заголовок столбца, а также менял ячейку из-за того, что основная таблица данных постоянно сортировалась пользователями. Я только хотел, чтобы изменения, внесенные в рабочий лист под названием «Основной», были записаны - я, вероятно, сделал это многословно, но он работает хорошо.

Мой запрос - это запрос о том, как я могу его адаптировать дальше. В «Основном» листе данных пользователь может одновременно просматривать несколько новых записей (незначительное количество, от 1 до 15 строк данных). Контрольный журнал выведет значение в столбце A только для первой записи. Возможно ли иметь такое, чтобы оно передавало только значение столбца A для каждой из записей при вставке в одно и то же время? Я пытаюсь проанализировать разницу во времени между заказом на продажу, который был сохранен как завершенный, а затем перенесен в электронную таблицу планирования доставки.

Option Explicit
Public PriorVal As String

Private Sub Workbook_Open()
Dim NR As Long
    With Sheets("AuditLog")
        NR = .Range("C" & .Rows.Count).End(xlUp).Row + 1
        Application.EnableEvents = False
        .Range("A" & NR).Value = Environ("UserName")
        .Range("B" & NR).Value = Environ("ComputerName")
        .Range("C" & NR).Value = Now
        Application.EnableEvents = True
    End With
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal sh As Object, ByVal Target As Range)
    If IsError(Selection(1).Value) = True Then
     PriorVal = "Error"
    ElseIf Selection(1).Value = "" Then
        PriorVal = "Blank"
    Else
        PriorVal = Selection(1).Value
    End If
End Sub

Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
Dim NR As Long
If sh.Name = "AuditLog" Then Exit Sub     'allows you to edit the log sheet
If sh.Name = "Order data" Then Exit Sub
If sh.Name = "Tables" Then Exit Sub
If sh.Name = "PO prep sheet" Then Exit Sub
If sh.Name = "PO upload sheet" Then Exit Sub
If sh.Name = "Purchase Orders" Then Exit Sub
If sh.Name = "Despatches" Then Exit Sub
If sh.Name = "Comments" Then Exit Sub
If sh.Name = "Late Codes" Then Exit Sub
If sh.Name = "Haulage costs" Then Exit Sub
If sh.Name = "Haulier instruction" Then Exit Sub

If Target.Address = "$R$3" Then Exit Sub

Application.EnableEvents = False
    With Sheets("AuditLog")
        NR = .Range("C" & .Rows.Count).End(xlUp).Row + 1
        .Range("A" & NR).Value = Environ("UserName")
        .Range("B" & NR).Value = Environ("ComputerName")
        .Range("C" & NR).Value = Now
        .Range("D" & NR).Value = sh.Name
        .Range("E" & NR).Value = Target.Address
        .Range("F" & NR).Value = Cells(5, Target.Column)
        .Range("G" & NR).Value = PriorVal
        .Range("H" & NR).Value = Target(1).Value
        .Range("I" & NR).Value = Cells(Target.Row, 1)
        NR = NR + 1
    End With
Application.EnableEvents = True

End Sub
...