EXCEL VBA ソートにおいて
EXCEL 2003 のVBAのsortにおいて、解決できなくて困って
おります。
名前,色,産地,品質,味,値段,重さ,
りんご,赤,青森,10,10,500,100
みかん,黄,和歌山,10,10,300,50
すいか,緑,群馬,10,8,2000,1000
メロン,黄緑,青森,10,8,2500,500
いちじく,赤,鹿児島,8,8,200,100
名前、品質、値段の順に並びかえたいと思い、
excelのVBAの記録でオートフィルタ後に
並び替えを行ったところ下記のコードが記録されました。
Sub Macro28()
Cells.Select
Selection.AutoFilter
Selection.Sort _
Key1:=Range("A2"), Order1:=xlAscending, _
Key2:=Range("D2"), Order2:=xlAscending, _
Key3:=Range("F2"), Order3:=xlAscending, _
Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin, _
DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
end sub
ところが、これをオブジェクトのマクロに使用して(2,3行目を自分の使い
たいように訂正)みると作動しません。
Private Sub CommandButton1_Click()
worksheets(1).Select
Selection.AutoFilter
Selection.Sort _
Key1:=Range("A2"), Order1:=xlAscending, _
Key2:=Range("D2"), Order2:=xlAscending, _
Key3:=Range("F2"), Order3:=xlAscending, _
Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal, DataOption3:=xlSortNormal
End Sub
watch 式では 3行目までは
worksheets(1).Select = TRUE ですし
Selection.AutoFilter = TRUE となっているのですが、
sortの反応が分からない状況です。
Selection.Sort _
Key1:=Range("A2"), Order1:=xlAscending, _
Key2:=Range("D2"), Order2:=xlAscending, _
Key3:=Range("F2"), Order3:=xlAscending, _
Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal, DataOption3:=xlSortNormal
この部分が問題なのかと考えております。
ネットで調べて
worksheets(1).RANGE("A1:G6").Select
Selection.sort……
とか
worksheets(1).RANGE("A1:G6").sort
とかも試してみたのですが、だめでした。
sort を使用するときにselectionとの相性や、
rangeとの兼ね合いで決まり等があるのでしょうか。
色々なサイトを回ってはいるのですが、ちょっと解決
にいたることができません。
どなたか、ご教授いただけると幸いです。
お礼
ありがとうございます。 orderとkey部分を増やしても問題なく出来ました。 応用の利く回答に頭が下がります。 エクセル(2000)としたのは申し訳けございません。 勤め先のバージョンと自宅使用のバージョンが違ってたので、 古い方を記入してしまいました。以後気をつけます。 早速業務で今使っているマクロに組み入れて使わせて頂きます。