У меня есть лист 1, в который я ввожу новые данные на листе, и на своем справочном листе я извлекаю те же значения из листа 1, чтобы я мог отсортировать их по введенному времени. Моя цель состоит в том, чтобы на листе 1 отображались последние 10 элементов, введенных на листе 1. Я использовал приведенную ниже формулу для сортировки справочного листа по дате, но поскольку я использую формулу для извлечения значений, она не срабатывает. Можно ли объединить это с новым макросом, чтобы я мог вводить данные в одном месте и сортировать их в другом месте?

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range
    Dim AB As Range
    Set A = Range("A:A")
    Set AB = Range("A:B")

    If Intersect(Target, A) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
        Target.Offset(0, 1) = Now
        AB.Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    Application.EnableEvents = True
End Sub

1 ответ1

0

Похоже, ваша проблема в том, что ваш макрос-код не запускается для изменения на одном листе, потому что лист меняется только благодаря ссылке на формулу. Если это так, не могли бы вы вместо этого поместить код (или вызвать любые необходимые Subs) из Sub Workbook_SheetChange () ? (событие SheetChange () в Рабочей книге сработает при изменении какого-либо листа). Вы можете проверить лист, который был изменен, используя Sh.Имя из этого Sub. И получите адрес ячейки изменения, используя Target.Адрес

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