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

初心者です。データ並べ替え(昇順)を自動実行するマクロを作成したいのですが、データ範囲が増減しても正しく実行できるようにするにはどうすればよいでしょうか。マクロの自動記録で作成しましたが、visual basic editorで範囲の修正する箇所を教えてください。

A 回答 (4件)

例えば、下記のように記述します。



Sheet1.Range("A1").CurrentRegion.Sort _
 Key1:=WS2.Range("A2"), Order1:=xlAscending, _
 Key2:=WS2.Range("B2"), Order2:=xlAscending, _
 Key3:=WS2.Range("C2"), Order3:=xlAscending, _
 header:=xlYes

※CurrentRegion プロパティは表範囲全体を表します。
    • good
    • 0

今あるマクロを見せていただけないと、どこをどう修正すればいいかはなんとも言えないのですが…。



もし並び替えする範囲の選択を
Range("A1:A10")
のように指定しているなら、
Range("A1", Range("A65536").End(xlUp))
のようにしてみてはいかがでしょうか。
    • good
    • 0

このようなマクロでしょうか


 Range("A1:C10").Select
 Selection.Sort Key1:=Range("A1"), Order1:=xlAscending,_
    Header:=xlGuess, OrderCustom:=1, _
    MatchCase:=False, Orientation:=xlTopToBottom, _
    SortMethod:=xlPinYin, DataOption1:=xlSortNormal

先頭の行を以下の
 Range("A1:C" & activesheet.range("A65536").end(xlup).row).select
とすれば、A列の最終行までを並べ替えの範囲とすることができます

また、先頭の行を
 Range("A1").CurrentRegion.Select
にすればA1を含む表全体を選択するという方法もあります

実際のマクロがないので参考にして修正してください
    • good
    • 0

もう既に回答があるのもあるが


(1)・・.End(xlup).Rowで最下行を捉える。=>範囲Rangeにする。
(2)CurrentRegionで範囲を採る
(3)UsedRangeで範囲を採る
(4)Selectionのままにして、ユーザーが実行全に前に指定させる。
  Userに範囲指定させる。
(6)InputBoxメソッドで範囲指定させる。
Set r = Application.InputBox("範囲指定", タイトル, Type:=8)
などが考えられます。
(4)(5)も場合によっては、良さは有ります。
おれぞれの語句で、WEB照会すれば、沢山コード例が出てきます。
    • good
    • 0

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