输入数据时自动排序行

时间:2017-02-04 15:10:10

标签: excel excel-vba vba

我有数据表,其中包括' L'列标题是存在以下数据的状态:

ERROR
PENDING
DOC PEND
COMPLETED

我一进入“完成”状态'然后该行应该整理出来并转到顶部。

我希望我的工作表应该显示所有已完成的行。

请帮我以这种方式进行自动排序。

1 个答案:

答案 0 :(得分:1)

将以下内容粘贴到工作表模块中。

Private Sub Worksheet_Activate()
myBoolean = False
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

If Not myBoolean Then
If Mid(Target.Address, 1, 2) = "$L" Then
On Error GoTo goodBye
If UCase(Target.Value) = "COMPLETED" Then
        Run moveRowToTop(Target.Row)
    End If
    myBoolean = False
End If
End If
goodBye:
On Error GoTo 0
End Sub

然后将以下内容粘贴到标准模块中。

Public myBoolean As Boolean

Function moveRowToTop(rowToChange As Long)

    Application.ScreenUpdating = False
    myBoolean = True
    Range("A2").Select
    Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    ActiveSheet.Range("A" & rowToChange + 1 & ":L" & rowToChange + 1).Select
    Selection.Copy
    Range("A2").Select
    ActiveSheet.Paste
    ActiveSheet.Rows(rowToChange + 1 & ":" & rowToChange + 1).Select
    Selection.Delete Shift:=xlUp
    Range("L2").Select
    Application.ScreenUpdating = True

End Function

尝试一下,看看它是否符合您的要求。