Sort メソッドで並び替えます

 今回は Sort オブジェクトに働きかけて並び替えを実行します。

Sort メソッドで並び替えます

 並び替えは Apply メソッドによって実行しますが、その前に「並び替え範囲」などを指定しておく必要があります。

 With Worksheets("いつ").Sort
   .SetRange Range("B2:C6")
   .Header = xlNo
   .MatchCase = False
   .Orientation = xlTopToBottom
   .SortMethod = xlPinYin
   .Apply
 End With

 

 .SetRange Range("B2:C6")

 SetRange は並び替えの範囲を設定するメソッドです。 Range("") の形で指定します。 Range("B2:C6")と記述したことで、「いつシート」にある乱数とテキストデータをまとめて指定したことになります。

 .Header = xlNo

 Header は先頭行を見出しにするかどうかを決めるプロパティです。見出しにするならば「 =xlYes 」と記述しますが、「いつどこソフト」では別に必要もないので、「 = xlNo 」 (いいえ、しませんよ)です。しかし「 = xlNo 」は既定値なので省略できます。削ってしまいましょう。

 .MatchCase = False

 MatchCase は「大文字と小文字を区別しますか?」というプロパティです。今の場合は対象は乱数と日本語なので、大文字も小文字も存在しません。削ります。

 .Orientation = xlTopToBottom

 並び替えの方向(上から下 or 左から右)を指定するプロパティです。もちろん、上から下なので「 = xlTopToBottom 」ですが、これも既定値なのでばっさり切ります。

 .SortMethod = xlPinYin

 「ふりがなを使っての並び替えをしますか?」というプロパティ。全然関係ないので削ります。

 .Apply

 削ったら大変です。最も重要なメソッドですからね。Apply で並び替えを実行します。

 で、結局 With ステートメントの中で残ったのは ......

 With Worksheets("いつ").Sort
   .SetRange Range("B2:C6")   
   .Apply
 End With

 なんとこの2行だけです。
 乱数を並び替えるという単純なプログラムなので、こうなるわけです。
 そこで前回に修正した記述と合わせて並べると、「いつ」に関しては次のようなコードになっているはずです:

 With Worksheets("いつ").Sort
  .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つにまとめてしまいます:

 With Worksheets("いつ").Sort
  .SortFields.Clear
  .SortFields.Add Key:=Range("B2"), SortOn _
   :=xlSortOnValues, Order:=xlAscending
  .SetRange Range("B2:C6")   
  .Apply
 End With

 ずいぶんとすっきりしましたね。
 あとは "いつ" の部分を "どこ", "誰", "何をした" と書き換えたコードを付け加えればマクロは動きますが ...... その点に関してもちょっとした「技」があって、もっと洒落た書き方にすることができますよ。けほけほ。喋り過ぎて喉が嗄れました。
 今回はここまで。次回は「マクロの部品化」について解説します。

スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください