Home » エクセルマクロ・Excel VBAの使い方 » Sortオブジェクト » SortFields.Addで昇順・降順を指定する-引数Order

SortFields.Addで昇順・降順を指定する-引数Order

対象:Excel 2010, Excel 2013, Windows版Excel 2016

「vba sortfields 並び順」
という検索で、『インストラクターのネタ帳』へアクセスがあることに気づきました。

SortFieldsコレクションオブジェクトのAddメソッドで、並べ替え条件を設定できます。

SortFieldsコレクションオブジェクトのAddメソッド

その際、並べ替えの順序を指定するには、どのようなコードを書けばいいのかを探していらしたのでしょうか。

[スポンサードリンク]

並べ替えの順序を指定するサンプルマクロ

いつものようにシンプルな例を見ましょう。
下図の単純な表がアクティブシートにあるときに、

表のサンプル画像

以下のSubプロシージャを実行すると、idの降順で並べ替えが行われます。

Sub 並べ替えの順序を指定する()
 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

 srt.Apply
End Sub

サンプルマクロの解説

ポイントは、SortFieldsコレクションオブジェクトのAddメソッドの、
 srt.SortFields.Add _
   Key:=Range("A1"), _
   Order:=xlDescending
引数Orderです。

引数KeyにRange("A1")が指定されて、引数Orderに降順を意味する定数xlDescendingが指定されているので、A列(id)をキーに、降順で並べ替えが行われます。

SortFields.Addメソッドの引数Orderには、XlSortOrder列挙に定義されている、

XlSortOrder列挙

定数xlAscending(昇順)か、xlDescending(降順)を指定できます。

Order As XlSortOrderとなっていて欲しかった

SortFields.Addメソッドの引数Orderが「As XlSortOrder」と定義されていれば、コーディング時に「xlAscending」「xlDescending」が候補表示されたはずですが、オブジェクトブラウザーで確認すると、残念ながらそうはなっていないので、

SortFieldsコレクションオブジェクトのAddメソッド

「xlAscending」「xlDescending」は手入力する必要があります。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sortオブジェクト » SortFields.Addで昇順・降順を指定する-引数Order

「Sortオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.