0

我正在使用以下代码对单元格进行排序:

Sub RecordSort()

Application.ScreenUpdating = False
Application.DisplayAlerts = False
ActiveSheet.Unprotect Password:="password"

Dim lastrow As Long
Dim ws As Worksheet
lastrow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range( _
    "B3:B" & lastrow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal

With ActiveSheet.Sort
    .SetRange Range("A3:P" & lastrow)
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

ActiveSheet.Protect Password:="password"
Application.ScreenUpdating = True
Application.DisplayAlerts = True

Range("A3").Select
End Sub

在 LI 列中有一个包含 5 个代码的下拉列表。当我在文件底部添加一个单元格时,它在 L 列中有下拉列表。一旦我对它进行排序(使用上面的宏),该行在 L 列中不再有下拉列表。有没有不同的方法我应该排序?

我正在根据列 B 的内容(这是一个姓氏)对列 A 到 P 进行排序。

4

1 回答 1

2

这是因为数据验证适用于单元格本身,而不是单元格中的值;因此,当您对值进行排序时,数据验证仍适用于原始单元格。最简单的解决方法可能是通过选择整个列并创建验证规则来将数据验证列表添加到整个列 L - 这是一个选项吗?

于 2013-03-12T17:00:07.087 回答