VBA - Обновить временную метку при редактировании диапазона строк - PullRequest
0 голосов
/ 22 марта 2019

У меня возникают некоторые проблемы при попытке собрать код VBA, который будет обновлять временную метку каждый раз, когда что-то в строке редактируется.

Так что мне нужна временная метка в A3, когда что-то изB3: CA3 редактируется и т. Д. Для каждой строки до 1000.

Я немного осмотрелся, но все коды, которые я нашел до сих пор, относятся только к определенному столбцу, а не к строкедиапазон ...

Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 22 марта 2019

Попробуйте этот макрос событий рабочего листа:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range, Intersection As Range, cell As Range
    Set r = Range("B3:CA1003")
    Set Intersection = Intersect(r, Target)

    If Intersection Is Nothing Then Exit Sub

    Application.EnableEvents = False
        For Each cell In Intersection
            Range("A" & cell.Row).Value = Date & " " & Time
        Next cell
    Application.EnableEvents = True
End Sub

Поскольку это код рабочего листа, установить очень просто и использовать автоматически:

  1. щелкните правой кнопкой мыши имя вкладки в нижней части окна Excel
  2. выберите Просмотр кода - откроется окно VBE
  3. вставьте материал и закройте окно VBE

Если у вас есть какие-либо вопросы, сначала попробуйте их на пробной странице.

Если вы сохраните книгу, макрос будет сохранен вместе с ней. Если вы используете версию Excel позже, чем 2003, вы должны сохранить файл в формате .xlsm, а не .xlsx

К Удалить Макрос:

  1. вызвать окна VBE, как указано выше
  2. очистить код
  3. закрыть окно VBE

Чтобы узнать больше о макросах в целом, см .:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

и

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Чтобы узнать больше о макросах событий (код листа), см .:

http://www.mvps.org/dmcritchie/excel/event.htm

Для работы должны быть включены макросы!

EDIT # 1:

Чтобы получить имя пользователя NT и имя приложения, попробуйте:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range, Intersection As Range, cell As Range
    Dim s As String

    Set r = Range("B3:CA1003")
    Set Intersection = Intersect(r, Target)
    s = vbCrLf & Environ("USERNAME") & vbCrLf & Application.UserName

    If Intersection Is Nothing Then Exit Sub

    Application.EnableEvents = False
        For Each cell In Intersection
            Range("A" & cell.Row).Value = Date & " " & Time & s
        Next cell
    Application.EnableEvents = True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...