短いコードで下記はどうですか。
標準モジュールに下記を貼り付け(デモ実行用)
Sub test03()
Dim r As Range
Set r = Application.InputBox("範囲=", Type:=8)
s = InputBox("ソートタイプ=")
Select Case s
Case "A"
r.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess
Case "B"
r.Sort Key1:=Range("B3"), Order1:=xlAscending, _
Key2:=Range("A3"), Order2:=xlDescending, Header:=xlGuess
Case "C"
r.Sort Key1:=Range("A3"), Order1:=xlDescending, Header:=xlGuess
End Select
End Sub
実行すると、見出しを含めてソート範囲を聞いてきます。マウスで範囲指定してOKをクリック。
ソートタイプ=と聞いてきますので、上記で用意したのは、3種ということで、A,B,Cのどれかを入力しOKをクリック。(数字コートや漢字文字列にすることも、上記コードを少し変えれば可能です。)
それでソートは終わります。項目見出しは範囲指定の第1行目に有るとします。
ーーー
タイプ A,B,Cの自分のニーズにあわせた改造方
上記コードの各タイプの記述で
ソートキーで
第1キー
Key1:=
Order1:=
第2キー
Key2:=
Order2:=
第3キー
Key3:=
Order3:=
のうち必要なものを書き込みます。
Key1だけ、Key1とKet2、Key1とKey2とKey3
の3種しかありません。Key1グループと、Key2、Key3のグループは、カンマでつないで書きます。
KeyについてはRange()のカッコ内に列記号と1を書き込む。列記号だけが大事で行番号はどうでも良いよう。
Orderは昇順xlAscending、降順xlDescendingのどちらかを指定します。
続けるときの _(継続記号)の要不要や、カンマの要不要について
注意してください。
行き詰まったら、そのソート方法を操作して、マクロの記録をとって
コードの書き方のヒントを得てください。類推して修正は易しいと思います。
お礼
有り難うございました。 無事登録でき、実行出来ました。 但し、セキュリーティレベルを低にしなければ成りませんでした。AWソフトはNOETON2005を入れてますが、問題ないでしょうか?