
お世話になります。
Excel2010で並べ替えの記録マクロを作りましたが、同ブック内の他のシートでも並べ替えが実行できるようにするにはどうしたらいいでしょうか?
以下がマクロの記述です。
ActiveWorkbook.Worksheets("テスト").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("テスト").Sort.SortFields.Add Key:=Range("D5:D110"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("テスト").Sort.SortFields.Add Key:=Range("E5:E110"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("テスト").Sort.SortFields.Add Key:=Range("F5:F110"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("テスト").Sort
.SetRange Range("A4:I110")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
当方は初心者で、同じ質問を検索しましたが、2007以前の解答しか見つけられず、該当する記述を試してみましたがうまくいきませんでした。
どうぞよろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
こんにちは。
2007以前は、ソートメソッドといい、2007以降は、ソートオブジェクトといいます。
しかし、2007以前のソートメソッドでも、互換性はあるはずです。
こちらでやってみましたが、特に問題はないようですね。
他のシートでも使えるということは、汎用性を持たせるということでしょうか。
同じ起点(A4)が同じで、同じ範囲なら、Worksheets("テスト") をActiveSheet にすればよいはずです。ダメだとしたら、どこでエラーがつくのでしょうか?
'//
Sub TestSort1()
'ソートオブジェクト
Dim rng As Range
With ActiveSheet
Set rng = Range("A4:I110")
With .Sort
.SortFields.Clear
.SortFields.Add Key:=rng.Columns(4), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=rng.Columns(5), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=rng.Columns(6), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.SetRange rng
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub
Sub SortTest2()
'Sort メソッド
With ActiveSheet
With .Range("A4:I110")
.Sort Key1:=.Cells(4, 4), Order1:=xlAscending, _
Key2:=.Cells(4, 5), Order2:=xlAscending, _
Key3:=.Cells(4, 6), Order3:=xlDescending, _
Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, SortMethod:=xlPinYin
End With
End With
End Sub
'///
WindFaller様
さっそくのご回答をありがとうございました。
「互換性はあるはず」というご指摘に、もう一度データを見直してみたところ、非表示にしている列に項目名と書式を設定していないことに気づきました。
これを修正して、「Worksheets("テスト") をActiveSheet 」に書き換えてみたところ、うまくいきました。
基本的なミスで動作していなかったようで、お恥ずかしい限りです。
書いていただいた記述も二つとも試してみました。
今はまだ内容がよく理解できませんが、今後の参考にさせていただきたいと思います。
ご丁寧に教えていただき、本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
エクセル 自動で別シートへ並べ替えてコピーするには?
Excel(エクセル)
-
マクロで並べ替えを複数のシートそれぞれに行う方法を教えてください
Excel(エクセル)
-
Excelでの並べ替えを全シートまとめて処理したい
Excel(エクセル)
-
4
別のシートで自動的に並べ替えをしたい(エクセル)
Excel(エクセル)
-
5
マクロを複数シートに実行するには?
Excel(エクセル)
-
6
同じ作業を複数のシートに実行させるにはどうしたらいいのでしょうか
Visual Basic(VBA)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
別シートのマクロを実行する方法
Excel(エクセル)
-
9
VBA ソートし、別シートへ転記
Excel(エクセル)
-
10
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
11
別のシートから値を取得するとき
Visual Basic(VBA)
-
12
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
13
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
14
特定の複数のシートに同じ処理をさせたい
Excel(エクセル)
-
15
複数のマクロボタンをまとめて一つのマクロボタンにするということ。
Excel(エクセル)
-
16
【再質問】【マクロ】複数シートのデータを自動で並び替えしたい
Excel(エクセル)
-
17
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
18
エクセルの複数のワークシートを名前順で並べ替えたい
Excel(エクセル)
-
19
Excelのマクロでソートがうまく動かない
Excel(エクセル)
-
20
Excel 書式を関数で判断。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
VBAでWordからExcelを開きたい。
-
5
Skypeで相手の声が途切れる
-
6
gooメール、リニューアル後の不...
-
7
MsgBoxがコンパイルエラーにな...
-
8
好きな人とテスト頑張ってと言...
-
9
何で俺には才能がないんだろう
-
10
発達障害者は教師になれるか
-
11
才能が1つもない人って病気な...
-
12
本人が近くにいるのに、聞こえ...
-
13
「お山の大将」は なぜなかなか...
-
14
勉強も嫌いでやりたいことも特...
-
15
「あの人があなたの悪口を言っ...
-
16
悪口言われているということを...
-
17
やばい。数学しかできない。
-
18
世の中優しい人やあんまり悪く...
-
19
悪口陰口多い人は好かれますか?
-
20
努力できない人ってこの世の中...
おすすめ情報
公式facebook
公式twitter