[[20141117125707]] 『Excel Macro ソートの範囲指定』(ふう) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Excel Macro ソートの範囲指定』(ふう)

お世話になります。
「マクロの記録」を利用してマクロを作成しました。

1.やろうとしていること。
 → B列〜Q列までにあるデータをB列,D列でソートします。

2.「マクロの記録」でやったデータとオペレーション
 → B7:Q20 までデータがあります。
 次のオペレーションをしました。
  ?@B7にカーソルをセットしました。
  ?ACtrl+Shift+↓ でB20までいきました。
  ?BCtrl+Shift+→ でQ20までいきました。
  ?Cメニューからソートを実施しました。

3.生成されたマクロ。

 Range("B7").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B7:B20"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("D7:D20"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("B7:Q20")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

4.支援いただきたいこと
 データの行数は作業毎に異なります。
 マクロのスクリプトで行数が固定されてしまっては困ります。
 どのように対応すればよろしいでしょうか?

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 1列や1行が丸々あいているなら使えないけど...
 Range("B7").CurrentRegion.Select
 とか。
 BJ

回答ありがとうございます。

申し訳ありませんが、どの部分を置き換えればいいのでしょうか?
※マクロは今回初めて作成した完全ど素人です。
※1セルの空白もありません。
(ふう) 2014/11/17(月) 15:12


 >Range("B7").Select
 >   Range(Selection, Selection.End(xlDown)).Select
 >   Range(Selection, Selection.End(xlToRight)).Select

   ↓

 With Range("B7").CurrentRegion
    .Select
    下行 = .Cells(.Cells.Count).Row
 End With

 Key:=Range("B7:B20") → Key:=Range("B7:B" & 下行)
 Key:=Range("D7:D20") → Key:=Range("D7:D" & 下行)
 SetRange Range("B7:Q20") → SetRange Range("B7:Q" & 下行)

 多分、動作見確認。
 BJ


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.