「vba sortfields 並び順」
という検索で、『インストラクターのネタ帳』へアクセスがあることに気づきました。
SortFieldsコレクションオブジェクトのAddメソッドで、並べ替え条件を設定できます。
その際、並べ替えの順序を指定するには、どのようなコードを書けばいいのかを探していらしたのでしょうか。
並べ替えの順序を指定するサンプルマクロ
いつものようにシンプルな例を見ましょう。
下図の単純な表がアクティブシートにあるときに、
以下のSubプロシージャを実行すると、idの降順で並べ替えが行われます。
Dim srt As Sort
Set srt = ActiveSheet.Sort
srt.SortFields.Clear
srt.SetRange Range("A1:B6")
srt.Header = xlYes
srt.SortFields.Add _
Key:=Range("A1"), _
Order:=xlDescending
End Sub
サンプルマクロの解説
ポイントは、SortFieldsコレクションオブジェクトのAddメソッドの、
srt.SortFields.Add _
Key:=Range("A1"), _
Order:=xlDescending
引数Orderです。
引数KeyにRange("A1")が指定されて、引数Orderに降順を意味する定数xlDescendingが指定されているので、A列(id)をキーに、降順で並べ替えが行われます。
SortFields.Addメソッドの引数Orderには、XlSortOrder列挙に定義されている、
定数xlAscending(昇順)か、xlDescending(降順)を指定できます。
Order As XlSortOrderとなっていて欲しかった
SortFields.Addメソッドの引数Orderが「As XlSortOrder」と定義されていれば、コーディング時に「xlAscending」「xlDescending」が候補表示されたはずですが、オブジェクトブラウザーで確認すると、残念ながらそうはなっていないので、
「xlAscending」「xlDescending」は手入力する必要があります。
Home » エクセルマクロ・Excel VBAの使い方 » Sortオブジェクト » SortFields.Addで昇順・降順を指定する-引数Order