这个代码的主要问题是,每当您对D列中的任何单元格进行更改时,它都会对整个D列进行排序。这可能会导致性能问题和意外结果。
另一个潜在的问题是,如果您更改了自定义排序顺序范围(即Range(“D1:D52”)),则此代码将无法正确地排序。
建议您使用以下代码来避免这些问题,并确保只对修改的单元格进行排序:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D:D")) Is Nothing Then
Application.EnableEvents = False
Dim SortRange As Range
Set SortRange = Range("D1:D" & Cells(Rows.Count, "D").End(xlUp).Row)
SortRange.Sort Key1:=SortRange, CustomOrder:=Range("D1:D52"), _
OrderCustom:=True
Application.EnableEvents = True
End If
End Sub
该代码仅对修改的单元格所在行以及下方的所有单元格进行排序,并且会动态确定需要排序的区域。