プロが教える店舗&オフィスのセキュリティ対策術

マクロ超初心者です。エクセル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

A 回答 (2件)

割と便利に安易な手の一つとして。


並べ替えの対象範囲にしたいセル範囲(A9:J153とか)を選んでから,名前ボックス(数式バーの左端,通常A1とか表示が出ている箱)に myRng と入れて範囲に名前を付けます。
挿入メニューの名前の定義で名前を付けたり,確認してもいいです。

続いて並べ替えの頭にしているB9,H9,I9,J9の各セルについても,それぞれmyB9,myH9,myI9,myJ9と名前を定義しておきます。

で,今のマクロで
selection.sort → range("myRng").sort
key1:=range("I9") → key1:=range("myI9")
以下同文
のように修正してみます。

行の挿入等を行ったあと挿入メニューの名前の定義で,定義した各名前のセル範囲が行の挿入に追従して正しい位置を指し示していることを確認してみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/03/16 22:06

>消してもいい不要な部分も分からないので教えて頂ければありがたいです。


詳細が分らないので、難しいね

'これでいいと思うよ
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

この回答への補足

早速の回答ありがとうございます。
詳細についてですが,8行までと154行からは並べ替えたい表とは別の情報が入っています。
9行~153行は1つの表で,行の挿入や削除で増やしたり減らしたりしたいのです。

質問させて頂いてるPCにエクセルが入っていないため頂いた回答は明日会社に行って試したいと思うのですが,

Rows("9:153").Select
Selection.Sort



ActiveSheet.UsedRange.Sort

の変更でよろしいでしょうか?
詳細を記入していなかったためお手数おかけしますが,回答頂ければありがたいですm(__)m

補足日時:2010/03/15 23:55
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!