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 に答える