てぃーだブログ › S・M・C (Simple.Macro.Create) ~エクセルマクロ日記~ › VBA › エクセルマクロ(VBA):帳票編集②(ソート処理)

2009年07月29日

エクセルマクロ(VBA):帳票編集②(ソート処理)

今日は息子の誕生日。
少年野球をやっていて前からスパイク
が欲しいと言っていたのでプレゼントとして
買ってあげました。
早速履いて走り回っている姿に
自分も子供の頃に野球道具を揃えてもらって
感激した事をふと思い出しました。
息子よ!夢を追って汗を流せ。

それでは,昨日の続きです。

今日は、ソートの処理を考えてみます。
第1キーが得意先コード
第2キーが売上年月日
第3キーが商品コードの順で並び替えます。
そこでソートの命令文を調べて記述していたのでは時間がかかります。
こんな時、便利な機能がマクロの記録機能。

下の手順に沿ってやってみてください。簡単です。

<マクロの記録を始めます>
エクセルマクロ(VBA):帳票編集②(ソート処理)

<ソート(並び替え)をします。:
   ソートの処理がマクロとして記録されます>
エクセルマクロ(VBA):帳票編集②(ソート処理)

<マクロの記録を終了します>
エクセルマクロ(VBA):帳票編集②(ソート処理)

<記録されたマクロを確認します>
エクセルマクロ(VBA):帳票編集②(ソート処理)

ソートのマクロが出来上がりました。

<作成されたマクロです。>

Sub Macro3()
'
' Macro3 Macro

Range("A1:I100").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2") _
, Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:= _
xlSortNormal, DataOption3:=xlSortNormal
Range("C2").Select
End Sub

そのままではデータが増えた時に正確に動かない事があるので、
修正を加えます。
範囲指定の Range("A1:I100").Selectの部分。
データの最後尾を取得するようにしましょう。
最後尾の取得については、以前の記事で説明してますので、
参考にしてください。

「g」を変数として使います。

g = Range("A65536").End(xlUp).Row

この命令で最後尾の行番号が取得できます。
こうする事によって、データが増えてもマクロを修正せずに
使える様になります。


Sub Macro3()
'
' Macro3 Macro

g = Range("A65536").End(xlUp).Row

Range("A1:I" & g).Select

Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2") _
, Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:= _
xlSortNormal, DataOption3:=xlSortNormal

End Sub

これでソートのマクロは完成です。
またまた長くなりましたので続きは明日にします。


同じカテゴリー(VBA)の記事

Posted by ミール at 09:30│Comments(0)VBA
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。