• 締切済み

Excelマクロの変化するデータ範囲の記述の方法

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

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

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

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

このようなマクロでしょうか  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を含む表全体を選択するという方法もあります 実際のマクロがないので参考にして修正してください

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

今あるマクロを見せていただけないと、どこをどう修正すればいいかはなんとも言えないのですが…。 もし並び替えする範囲の選択を Range("A1:A10") のように指定しているなら、 Range("A1", Range("A65536").End(xlUp)) のようにしてみてはいかがでしょうか。

回答No.1

例えば、下記のように記述します。 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 プロパティは表範囲全体を表します。

関連するQ&A