EXCEL2007と2003のソートの記述の違い?
下記は配布する予定で作成したプログラムの一部(ソート部)です。EXCEL2007で作成して機能しているのですが残念ながらEXCEL2003ではエラーとなります。(方法2)そこでもうひとつ(方法1)に変えてみましたがどちらもEXCEL2003ではエラーになります。
内容は1行目の見出し部分を並び替えさせるというものです。(優先順に左から右)抜粋コードの前段階では各見出しの先頭にアルファベットと数字を付加し、その後その付加を基準にソート対象列を抜粋コードにより並び替え、その後は付加コードを切り取るという流れです。
残念なことにEXCEL2003が無いものですから、2007と2003のソートの記述の違いが解りません。何卒ご教示願えませんでしょうか?
ちなみに変数 見出し列数 は列のカウント数です。(ソート対象外の列)そして変数の指定の誤りというおちはありません。
方法1(2回めに2003用でもいけるかなと思って作成分)
SH2.Sort.SortFields.Clear
SH2.Sort.Orientation = xlLeftToRight
SH2.Range(Cells(1, 見出し列数 + 1), Cells(1, 見出し列数 + 1).End(xlToRight)).Sort _
key1:=SH2.Cells(1, 見出し列数 + 1), Order1:=xlAscending, _
Header:=xlNo
方法2 (最初に深く考えず作成したもの 思いきり2007仕様になってます)
With SH2.Sort '見出し優先順位により入れ替え
.SortFields.Clear
.SortFields.Add key:=SH2.Range(Cells(1, 見出し列数 + 1), Cells(1, 見出し列数 + 1).End(xlToRight)), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange SH2.Range(Cells(1, 見出し列数 + 1), Cells(1, 見出し列数 + 1).End(xlToRight))
.Header = xlNo
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
お礼
ありがとうございます! かなり難しそうですが、頑張ってみます。 助かりました!