Как сохранить историю изменений данных в одной книге Excel

1

Пользователь отправил это в другом вопросе :

Вот некоторый код, который будет следить за диапазоном A1:G12на любом листе с кодом. Если rстрока была изменена, то код скопирует все из Ar: Gr в лист с кодовым именем shtLog. (Кодовое имя - это имя, отображаемое в VBA, а не имя на вкладке, которую вы видите в Excel.) Это должно заставить вас двигаться в правильном направлении.

 Private Sub Worksheet_Change(ByVal Target As Range)    
    Dim r As Integer
    Dim c As Integer
    Dim arr(1 To 1, 1 To 12)
    If Not Intersect(Target, Range("A1:G12")) Is Nothing Then
        r = Target.Row
        For c = 1 To 12
            arr(1, c) = Cells(r, c).Value
        Next
        With shtLog
            .Range(.Cells(.UsedRange.Rows.Count + 1, 1), .Cells(.UsedRange.Rows.Count + 1, 12)) = arr
        End With
    End If
End Sub

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

Кто-нибудь знает, как заставить код работать так, чтобы он начал запись в назначенном листе?

Марв
источник

Ответы:

2

Не помещайте это в модуль.

Этот макрос вызывается автоматически каждый раз , когда изменение происходит в рабочем листе, как вы можете видеть из своей первой линии: Private Sub Worksheet_Change(ByVal Target As Range).

В редакторе VBA с левой стороны дважды щелкните лист, на котором вы хотите добавить макрос (т. Е. Лист, на котором вы хотите отслеживать изменения), а затем вставьте код с правой стороны.

Если вы хотите отладить его, выполните следующие действия:

  1. Поставьте точку останова в первой строке кода, щелкнув по левой стороне строки. Появится коричневая точка, и линия будет выделена тем же цветом, например так: введите описание изображения здесь

  1. Внесите изменения в таблицу, например, поместив значение в ячейку. Код будет выполняться и останавливаться в точке останова , в нашем случае в первой строке он будет выделен желтым цветом, например так:

введите описание изображения здесь


  1. Чтобы выполнить код построчно, нажмите F8. Это поможет вам увидеть, что происходит на каждом шагу.

  2. После того, как вы сделали отладку, вы можете удалить точку останова, нажав на коричневое пятно.

Имейте в виду, что макрос помещает значения в рабочую таблицу с именем shtLog, вы должны создать рабочую таблицу с таким именем или изменить имя в коде, чтобы избежать ошибки, связанной с отсутствием целевой таблицы.

jcbermu
источник
Я дам ему попробовать - ценится.
Марв