1

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

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

Я хотел бы иметь возможность накопить историю около 50 изменений данных.

спасибо Джефф

1 ответ1

1

Вот краткий фрагмент, который поможет вам начать работу и даст вам кое-что для поиска. Этот код будет наблюдать за ячейкой A1 и, если он изменится, запишет время, которое он изменит, и значение, которое он займет после изменения в строке 3. Это, вероятно, потребует дополнительной логики, чтобы быть полезным. Код входит в код VBA для листа, который меняется.

Private Sub Worksheet_Change(ByVal Target As Range)

    'WatchedCell is the cell we want to log changes of, I used cell A1
    Dim WatchedCell As Range
    Set WatchedCell = Application.ActiveSheet.Range("A1")

    'Target comes from the Worksheet_Change event and tells us what changed in the event
    'See if the watched cell is among the cells which changed
    Dim Inter As Range
    Set Inter = Intersect(WatchedCell, Target)

    'Insert a row to record the time in the column A and the value after the change in column B
    If Not Inter Is Nothing Then
        Rows(3).EntireRow.Insert
        Application.ActiveSheet.Range("A3") = Now()
        Application.ActiveSheet.Range("B3") = WatchedCell
    End If
End Sub

Одна важная проблема (подразумеваемая учеником Гэри в комментариях к вашему вопросу) заключается в том, что если, например, ячейка A1 является формулой и изменяется только при изменении ячейки A2, событие Worksheet_Change не распознает A1 как изменившееся при изменении A2, поскольку это изменилось из-за события Worksheet_Calculate.

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