Сортировка таблицы при вводе новых данных в D, но следуйте этой записи до новой позиции - PullRequest
0 голосов
/ 29 мая 2020

У меня есть базовый c код для сортировки таблицы excel, и он работает хорошо:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("C3", Range("C3").End(xlDown)).Sort Key1:=Range("C3"), Order1:=xlAscending, Header:=xlYes
End Sub

Однако, когда данные вводятся в C. Можно ли будет проследить за записью до ее новой позиции после сортировки? Если да, то как мне исправить код, чтобы это сделать?

Спасибо!

1 Ответ

1 голос
/ 01 июня 2020

Есть несколько способов сделать это. Один из них представлен ниже.

Вместо Worksheet_SelectionChange() в следующем решении используется Worksheet_Change(). Идея состоит в том, чтобы сохранить новое добавленное значение (далее предполагается, что u набрал в столбце C непосредственно, чтобы добавить новое значение. Если у вас есть указанное c местоположение в столбце D, измените условие if, чтобы проверить наличие изменений в этом месте.), а затем выполните поиск после сортировки. Он будет прокручиваться к новому добавленному значению после сортировки каждый раз, когда добавляется новое значение. Вы можете приспособиться к своему использованию.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim val As Variant
    If Target.Column = 3 Then
        val = Target.Value

        Range("C3", Range("C3").End(xlDown)).Sort Key1:=Range("C3"), Order1:=xlAscending, Header:=xlYes

        ActiveWindow.ScrollRow = Application.WorksheetFunction.Match(val, Range("C3", Range("C3").End(xlDown)), 0) + 2
    End If
End Sub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...