今回は Sort オブジェクトに働きかけて並び替えを実行します。
Sort メソッドで並び替えます
並び替えは Apply メソッドによって実行しますが、その前に「並び替え範囲」などを指定しておく必要があります。
.SetRange Range("B2:C6")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
SetRange は並び替えの範囲を設定するメソッドです。 Range("") の形で指定します。 Range("B2:C6")と記述したことで、「いつシート」にある乱数とテキストデータをまとめて指定したことになります。
Header は先頭行を見出しにするかどうかを決めるプロパティです。見出しにするならば「 =xlYes 」と記述しますが、「いつどこソフト」では別に必要もないので、「 = xlNo 」 (いいえ、しませんよ)です。しかし「 = xlNo 」は既定値なので省略できます。削ってしまいましょう。
MatchCase は「大文字と小文字を区別しますか?」というプロパティです。今の場合は対象は乱数と日本語なので、大文字も小文字も存在しません。削ります。
並び替えの方向(上から下 or 左から右)を指定するプロパティです。もちろん、上から下なので「 = xlTopToBottom 」ですが、これも既定値なのでばっさり切ります。
「ふりがなを使っての並び替えをしますか?」というプロパティ。全然関係ないので削ります。
削ったら大変です。最も重要なメソッドですからね。Apply で並び替えを実行します。
で、結局 With ステートメントの中で残ったのは ......
.SetRange Range("B2:C6")
.Apply
End With
なんとこの2行だけです。
乱数を並び替えるという単純なプログラムなので、こうなるわけです。
そこで前回に修正した記述と合わせて並べると、「いつ」に関しては次のようなコードになっているはずです:
.SortFields.Clear
.SortFields.Add Key:=Range("B2"), SortOn _
:=xlSortOnValues, Order:=xlAscending
End With
With Worksheets("どこ").Sort
.SetRange Range("B2:C6")
.Apply
End With
1つにまとめます!
この With と End With に囲まれた2つの部分はともに Worksheets("いつ").Sort オブジェクトに関するものなので、1つにまとめてしまいます:
.SortFields.Clear
.SortFields.Add Key:=Range("B2"), SortOn _
:=xlSortOnValues, Order:=xlAscending
.SetRange Range("B2:C6")
.Apply
End With
ずいぶんとすっきりしましたね。
あとは "いつ" の部分を "どこ", "誰", "何をした" と書き換えたコードを付け加えればマクロは動きますが ...... その点に関してもちょっとした「技」があって、もっと洒落た書き方にすることができますよ。けほけほ。喋り過ぎて喉が嗄れました。
今回はここまで。次回は「マクロの部品化」について解説します。