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 я не вижу, не нахожу, не выбираю и не запускаю макрос, поэтому я не знаю, как заставить работать регистратор.

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

1 ответ1

2

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

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

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

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

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

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


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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .