自动排序会覆盖颜色排序

3
我正在为 Excel 制作一个数据库。 目标是将输入的数据按照颜色和字母顺序自动排序。
我正在使用以下 VBA 代码进行自动排序。
Private Sub Worksheet_Change(ByVal Target As Range)

    On Error Resume Next
    If Not Intersect(Target, Range("A:A")) Is Nothing Then
        Range("A1").Sort Key1:=Range("A2"), _
          Order1:=xlAscending, Header:=xlYes, _
          OrderCustom:=1, MatchCase:=False, _
          Orientation:=xlTopToBottom

    End If

End Sub

我已经设置了以下内容的颜色分类宏:

 With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    ActiveWorkbook.Worksheets("Master").ListObjects("Table2").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Master").ListObjects("Table2").Sort.SortFields.Add( _
        Range("Table2[Name]"), xlSortOnCellColor, xlDescending, , xlSortNormal). _
        SortOnValue.Color = RGB(255, 0, 0)
    With ActiveWorkbook.Worksheets("Master").ListObjects("Table2").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

问题在于一旦我输入新数据,按字母顺序排序就会覆盖颜色排序。请有人帮忙让颜色排序优先于字母排序吗?
非常感谢您的帮助!
1个回答

2
当您直接设置Range.Sort属性时,它会删除现有的SortFields
可选步骤:循环遍历并删除任何SortFields,其中.SortOn不是SortOnCellColor以删除任何非颜色排序。
要在末尾添加排序,您只需添加一个新的SortField,就像您已经为颜色所做的一样,然后应用排序。
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Not Intersect(Target, Me.Range("A:A")) Is Nothing Then
        'Add new SortField to end of existing Sorts
        Me.ListObjects("Table2").Sort.SortFields.Add Key:=Me.Range("A2"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        'Apply new SortFields
        Me.ListObjects("Table2").Sort.Apply
    End If
End Sub

然后,您需要仔细检查代码中是否还有与 ActiveWorkbook 相关的引用,并将其全部删除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接