Изменение кода VBA для добавления даты изменения и имени пользователя;создать модификацию трекера - PullRequest
0 голосов
/ 21 декабря 2018

Заранее благодарю за любую предоставленную помощь.Я нашел приведенный ниже код для добавления текущей даты в соседний столбец при редактировании, и немного изменил его, чтобы начать.Обратите внимание, что этот код предназначен для применения к рабочему листу, что может усложнить мой бонусный вопрос.Я хотел бы изменить его, чтобы сделать следующее:

  1. Добавить дату в столбец L строки редактирования независимо от столбца, в котором выполняется редактирование.Я пришел на форум, потому что текущий механизм использует смещение, которое в этом случае не работает.
  2. Добавьте также имя пользователя в столбец M строки редактирования.Я знаю, что это просто Application.Username, но я не уверен, как это сделать.Кроме того, если бы кто-то мог указать мне правильное направление с точки зрения использования Split для получения «First Last» вместо «Last, First», это было бы здорово.

Бонусуказывает на кого-то, кто хочет написать некоторый код, который автоматически добавляет в список всех редакторов даты, когда они внесли изменения на отдельном листе под названием «Review_Tracker».Я просто хотел бы, чтобы в нем была одна запись за день правок одного редактора (т. Е. Если Джон Доу внес изменения в три строки 10 декабря, Джейн Доу внес изменения в пять строк 10 декабря, а Джейн Доу внес измененияв четыре строки 11-го декабря будет выводиться только одна строка данных за каждый день редактирования каждого редактора, то есть одна строка для правок Джона 10 декабря, одна для правок Джейн 10-го декабря и одна для правок Джейн 11-Декабрь редактирует)Было бы ключевым, чтобы эти обновления были внесены как изменения и сохраняют записи старых изменений, поскольку возможно, что редактирование может быть отредактировано.Я хочу, чтобы этот вывод отражал список всех изменений и их даты, чтобы легко продемонстрировать, как часто этот документ просматривается.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim xRg As Range, xCell As Range
On Error Resume Next
If (Target.Count = 1) Then
    If (Not Application.Intersect(Target, Me.Range("K:K")) Is Nothing) Then _
        Target.Offset(0, +1) = Date
    Application.EnableEvents = False
    Set xRg = Application.Intersect(Target.Dependents, Me.Range("K:K"))
    If (Not xRg Is Nothing) Then
        For Each xCell In xRg
            xCell.Offset(0, +1) = Date
        Next
    End If
    Application.EnableEvents = True
End If
End Sub    
...