プロが教えるわが家の防犯対策術!

手動で複数行を選択します(例えば5行目から35行目)。その選択した行のC列、F列でソートを行います。
次にまた複数行を選択します(例えば15行目から70行目)。そして同様にC列、F列でソートを行います。

このように手動で選択した範囲のソートを行うマクロを教えていただけないでしょうか。手動設定の範囲の書き方が分かりません。ソートは第1→C列、第2→F列でお願いします。

A 回答 (3件)

No1です



>修正をお願いできないでしょうか。
こんな感じでいけると思いますけれど??

Selection.Sort key1:=Columns("C"), key2:=Columns("F")

詳細な設定(昇順・降順や大小文字の区分、特殊リストの使用など)は、ご質問文にないので全てデフォルトです。
    • good
    • 0
この回答へのお礼

できました。この1行でできるんですね。ありがとうございました。

お礼日時:2024/01/28 08:00

Key:=Range("Selection:Selection") _


, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

Key:=Selection.Sort SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    • good
    • 0
この回答へのお礼

すみません、どこと入れ替えればよいのでしょうか?

お礼日時:2024/01/27 16:31

こんにちは



選択されているセル範囲は、Selection で取得できます。

一方、適当な範囲を選択してご希望のソートを行う操作を「マクロの記録」にとってみれば、「固定範囲に対するソート」のコードが得られます。
ですので、この固定範囲を Selection になるように書き換えてあげれば、お望みのコードとなります。
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
修正をお願いできないでしょうか。うまくいきませんでした。

ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("Selection:Selection") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("F:F") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("C:F")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

お礼日時:2024/01/27 13:44

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A