
UsedRangeを使ってソートすることは可能ですか?
エクセルですが
学年 組 出席番号
2 A 1
1 B 2
と言うデータがあり、
これにフィルタをかけつつ、A列で昇順に並び替えるVBAを作ってるのですが
Sub さんぷる()
オートフィルタをかける
Range(Cells(1, 1), Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column)).AutoFilter
UsedRange.Sort Key1:=Cells(1, 1), order1:=xlAscending
End Sub
とすると、
UsedRangeでコンパイルエラーになるのですが
どうすればよろしいでしょうか?

No.4ベストアンサー
- 回答日時:
こんにちは。
なぜ、UsedRangeを使わなくてはならないのでしょうか?
オートフィルタは、一種のデータテーブルが出来ているのですから、そのテーブルの認識には、私は、UsedRangeは使いません。
エラーになるのは、UsedRangeの親オブジェクトがないからです。
>Range(Cells(1, 1), Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column))
列の間がないのなら、このような使い方はしませんが、あえて書くなら、このようになります。
RangeとCellsは、親オブジェクトの関係がないので、2つは繋がっていません。エラーの可能性を含んでいます。
With ActiveSheet '←親オブジェクト
.Range("A1", .Cells(1, Columns.Count).End(xlToLeft)).AutoFilter
.UsedRange.Sort Key1:=Cells(1, 1), Order1:=xlAscending
End With
私なら、このような書き方をします。
Sub Sample1()
With ActiveSheet
If .AutoFilterMode = False Then
.Cells(1, 1).AutoFilter 'データの左端上のセル
End If
.AutoFilter.Range.Sort Key1:=.Range("A1"), Order1:=xlAscending, _
Header:=xlYes
End With
End Sub
UsedRangeを使えば列や行が増えても
対応できると思ったからです。
UsedRangeがエラーになるのは親オブジェクトがないからと言う理由なのですね。
スマートなコード、ありがとうございます。
No.3
- 回答日時:
sub macro1()
range("A:C").autofilter
activesheet.autofilter.range.sort key1:=range("A1"), order1:=xlascending, header:=xlyes
end sub
みたいな。
#参考
>UsedRangeでコンパイルエラーになるのですが
activesheet.usedrange
のように使うモノです。
UsedRange.Sort
ではなく
ActiveSheet.AutoFilter.Range.Sort
とやればよかったのですね。
できました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) エクセルVBA オートフィルタでの絞り込みと並び替えについて 1 2023/07/08 13:08
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Visual Basic(VBA) ExcelVBAで、型が一致しませんのエラーについて 3 2023/06/20 09:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel関数、何がいけないのかわ...
-
エクセルの計算表の下向き三角...
-
グーグルスプレッドシート 連番...
-
=SUBTOTAL に =COUNTIF の機能...
-
EXCELのフィルタオプションで
-
任意の順位があり、列範囲内か...
-
色フィルターをかけた状態で、...
-
VBA 表の1つ下のセルを選択する
-
オートフィルタで抽出したデー...
-
行番号の文字の色が青色の理由?
-
[Aviutl] ノイズ除去に関して
-
Excelで特定も文字を含む行全て...
-
Photoshopで画像を網点みたいに...
-
Excel2010 フィルタで抽出できない
-
エクセルのフィルタをかけると...
-
CでIIRフィルタを作りたいので...
-
エクセルで、桁数の異なるデー...
-
photoshopでフィルタを部分的に...
-
教えて下さい!関数SUBTOTALとC...
-
VLOOKUPで抽出したアドレスデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルオートフィルタで余計...
-
Excel関数、何がいけないのかわ...
-
行番号の文字の色が青色の理由?
-
教えて下さい!関数SUBTOTALとC...
-
オートフィルタで抽出したデー...
-
色フィルターをかけた状態で、...
-
=SUBTOTAL に =COUNTIF の機能...
-
エクセルのフィルタをかけると...
-
エクセルの計算表の下向き三角...
-
エクセルで、桁数の異なるデー...
-
Excel VBAでオートフィルタで抽...
-
オートフィルタをかけた表に一...
-
エクセルでのオートフィルタオ...
-
5の倍数の日付だけを抽出したい
-
Excel2010 フィルタで抽出できない
-
エクセル:色の付いたデータを...
-
excelで奇数の行のみ削除したい
-
Excel VBAでフィルタしたものに...
-
色のついたセルにフラグを立た...
-
Excelのセルのデータ:年...
おすすめ情報