Excel VBA:插入新行时自动排序

时间:2018-12-03 14:29:52

标签: excel vba excel-vba sorting

我有一个表格,其中包含来自A5:S的数据,并且每次插入一行时,都希望按标题为"segment"的列进行排序。

我在字符串列“ 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 :(得分:0)

如果您进行更改该怎么办?

if target.column = 2 then

if activecell.column = 2 then

答案 1 :(得分:0)

如果您在A列中保留#of行的计数,那么当您插入一行时,当行数增加时,可以运行worksheet_change事件。 可能将enableevents添加为false是一个好主意,因此sort_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