• ベストアンサー

並べ替えのマクロで対象行の範囲を行を増やした分だけ可変にして増やしたい。

マクロ超初心者です。エクセル2003においての質問です。 作成した〔日付順〕のボタンを押すことで並べ替えをしたいと思い,以下のマクロを「記録」から作成したのですが, 9行~153行の間に行を挿入した場合,並べ替えの対象となる行も同じように増えてほしいのですが,常に9行~153行のままで増えてくれません。 可能なら9行より前に行を挿入した場合も同じように可変して欲しいです。 全くのマクロ初心者でどう変えればいいのか分かりません。 また,「記録」から作成したマクロには操作内容が全て存在するようなのですが, 消してもいい不要な部分も分からないので教えて頂ければありがたいです。 よろしくお願いします。 (出来れば以下を書き直して全て貼り付けて頂けるとかなり助かります。) sub 日付順()    Rows("9:153").Select    Selection.Sort Key1:=Range("I9"),Order1:=xlAscending,Key2:=Range("J9") _       ,Order2:=xlDescending,Header:=xlGuess,OrderCustom:=1,MatchCase:= _       False,Orientation:=xlTopToBottom,SortMethod:=xlPinYin,DataOption1:= _       xlSortNormal,DataOption2:=lxSortNormal    Selection.Sort Key1:=Range("H9"),Order1:=xlAscending,Key2:=Range("B9") _       ,Order2:=xlDescending,Key3:=Range("M9"),Order3:=xlAscending,Header _       :=xlGuess,OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom _       ,SortMethod:=xlPinYin,DataOption1:=xlSortNormal,DataOption2:= _       xlSortNormal,DataOption3:=lxSortNormal End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

割と便利に安易な手の一つとして。 並べ替えの対象範囲にしたいセル範囲(A9:J153とか)を選んでから,名前ボックス(数式バーの左端,通常A1とか表示が出ている箱)に myRng と入れて範囲に名前を付けます。 挿入メニューの名前の定義で名前を付けたり,確認してもいいです。 続いて並べ替えの頭にしているB9,H9,I9,J9の各セルについても,それぞれmyB9,myH9,myI9,myJ9と名前を定義しておきます。 で,今のマクロで selection.sort → range("myRng").sort key1:=range("I9") → key1:=range("myI9") 以下同文 のように修正してみます。 行の挿入等を行ったあと挿入メニューの名前の定義で,定義した各名前のセル範囲が行の挿入に追従して正しい位置を指し示していることを確認してみてください。

rousanox
質問者

お礼

回答ありがとうございます。 マクロの扱いに慣れるにはまだまだ時間がかかりそうですが,頂いた回答でうまく動作しました。 今後も応用する場面があるように思えるので非常に助かりました。 ありがとうございます。

その他の回答 (1)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

>消してもいい不要な部分も分からないので教えて頂ければありがたいです。 詳細が分らないので、難しいね 'これでいいと思うよ Sub 日付順() ActiveSheet.UsedRange.Sort Key1:=Range("I9"), Order1:=xlAscending, Key2:=Range("J9") _ , Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _ False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin, DataOption1:= _ xlSortNormal, DataOption2:=lxSortNormal Selection.Sort Key1:=Range("H9"), Order1:=xlAscending, Key2:=Range("B9") _ , Order2:=xlDescending, Key3:=Range("M9"), Order3:=xlAscending, Header _ :=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom _ , SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:= _ xlSortNormal, DataOption3:=lxSortNormal End Sub

rousanox
質問者

補足

早速の回答ありがとうございます。 詳細についてですが,8行までと154行からは並べ替えたい表とは別の情報が入っています。 9行~153行は1つの表で,行の挿入や削除で増やしたり減らしたりしたいのです。 質問させて頂いてるPCにエクセルが入っていないため頂いた回答は明日会社に行って試したいと思うのですが, Rows("9:153").Select Selection.Sort ↓ ActiveSheet.UsedRange.Sort の変更でよろしいでしょうか? 詳細を記入していなかったためお手数おかけしますが,回答頂ければありがたいですm(__)m

関連するQ&A