Excel2000のSORTマクロの質問
ワークシート内にSortキー指定セルを3つ設定し、これをマクロで読み取って、最大3個までの sortを実行しています。
Selection.Sort Key1:=Range(strKey1), Order1:=xlAscending, Key2:=Range(strKey2), _
Order2:=xlAscending, Key3:=Range(strKey3), Order3:=xlAscending, _
Header:=xlGuess, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
注)strKey1,strKey2,strKey3にはSortキーを行うセル番号(E11など)が入ります。
これですと、strKey2 と strKey3 に値が入っていないと「1004 アプリケーション定義またはオブジェクト定義のエラーです」と出るので、IF文を使って Sort命令自体を3つに分けて処理しています。
そこで質問なのですが、Selection.Sort 命令以降を『文字列変数』で記述して、strKey1,strKey2,strKey3の入力内容によって命令文を操作して、1つのsort命令で処理したいのですが、可能なのでしょうか?
つまり、strKey2 と strKey3 が未入力ならば、
Selection.Sort Key1:=Range(strKey1), Order1:=xlAscending, _
Header:=xlGuess, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin
…のようになるように、文字列として書きたいのですが、strKey1だけ指定する場合、
strSortString = "Key1:=Range(""" & strKey1 & """), Order1:=xlAscending, " & _
"Header:=xlGuess, MatchCase:=False, Orientation:=xlTopToBottom, " & _
"SortMethod:=xlPinYin"
Selection.Sort strSortString
と書きたいのです。
実際に上のようにやってみますと
「1004 入力した文字列は参照名または定義名として正しくありません。」と出ます。
基本的にsort命令はこのような使い方はできないのでしょうか?
分かりにくい説明ですみませんが、よろしくお願いします。
お礼
ご回答いただきましてありがとうございます。 Range.Sortメソッドのみで正常に動作しました。 2回ソートしている、ご指摘をありがとうございました。 Excel2003と2007で使えるメソッドがかなり違うことがわかりました。 どうもありがとうございました。