Excel VBA: автосортировка при вставке новой строки - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть таблица с данными из A5:S, и я хочу отсортировать по столбцу с "segment" в заголовке каждый раз, когда вставляется строка.

Я сделал числовой столбец слева отмой строковый столбец «сегмент», который соответствует моему «ранжированию», единственная проблема в том, что он не сортирует строки автоматически.

Я пробовал этот VBA, но ничего не происходит:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 2 Then

        Dim lastRow As Long
        lastRow = Cells(Rows.Count, 1).End(xlUp).Row
        Range("A5:S" & lastRow).Sort key1:=Range("A5:A" & lastRow), order1:=xlAscending, Header:=xlGuess

    End If

End Sub

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Если вы сохраняете количество # строк в столбце A, то при вставке строки событие worksheet_change может запускаться при увеличении строк.Было бы неплохо добавить enableevents в false, чтобы change_evnt не срабатывал при сортировке

Dim LstRw As Long

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Rws As Long
        Rws = Me.Cells(Me.Rows.Count, "A").End(xlUp).Row

        If Rws > LstRw Then
            Application.EnableEvents = False
            MsgBox "Run your code here!"
            Application.EnableEvents = True
        End If

    End Sub

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        LstRw = Me.Cells(Me.Rows.Count, "A").End(xlUp).Row
    End Sub
0 голосов
/ 03 декабря 2018

Как насчет, если вы измените:

if target.column = 2 then

на

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