性格悪い人が優勝

ActiveSheet.UsedRange.Addressで
並べ替えの範囲名を指定することはできないのでしょうか?

Sub Sample()
Cells(1, 1).AutoFilter
ActiveSheet.AutoFilter.Range.Sort Key1:=ActiveSheet.UsedRange.Address, Order1:=xlAscending, Header:=xlYes
End Sub
を動かすと、実行時エラー1004になってしまいます。

Key1:=Range("A1")にするとうまく行きますが、
キチンと範囲を指定してあげたいのですが、その場合どうすればいいでしょう?

「エクセル並べ替え VBA」の質問画像

A 回答 (2件)

sortの命令のマクロの書き方を全く誤解しています。




>キチンと範囲を指定してあげたいのですが、その場合どうすればいいでしょう?

正しい:
(並べ替える対象範囲).sort key1:=(並べ替え基準), order1:=…

並べ替えの範囲を指定するには、先頭の「並べ替える対象範囲」の部分にそれを与えます。
つまりあなたのマクロの先頭部分で正解です。



key1のところには、どの列を基準に全体を並べ替えをするのかを指定します。
アナタのマクロはここが全く間違いです。

例えば指定範囲をA列を基準に並べ替えたいなら:
cells(1,1).autofilter
activesheet.autofilter.range.sort key1:=range("A1"), order1:=xlascending, header:=xlyes
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2013/03/19 21:42

こんばんは!



1行目(項目行)・1列目に空白がない場合は

Range("A1").CurrentRegion.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes

としてみてはどうでしょうか?

途中に空白があり最終セルA1~最終セルまでを並び替えするのであれば

ActiveSheet.UsedRange.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes

といったような具合でもOKだと思います。m(_ _)m
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2013/03/19 21:42

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