Excel VBAには現在2種類の並び替えの書き方があります。
1つはExcel2003までの書き方のもの、もう一つはExcel2007以降の書き方のもの。
今回は2007以降の書き方で起きたエラーについて困ったことがありましたので、備忘録として書いておきます。
エラーメッセージはいったんマクロの書いてあるExcelを閉じて再度開こうとした時に出てきました。
エラーの内容を見ると、どうも並び替えに問題があるようです…
With Worksheets("Sheet1")
.Sort.SortFields.Clear ‘←ここを忘れていました…
.Sort.SortFields.Add key:=.Range("B2"), Order:=xlAscending
.Sort.SetRange .Range("A2:C10")
.Sort.Header=xlNo
.Sort.Apply
End With
エラーの原因は、SortFields.Clearメソッドを書き忘れたことでした。
SortFieldsをクリアしてから行わないと前回のSortKeyと今回のSortKeyが被ってエラーが起こってしまうのが理由のようです。
当初は原因が全くわからず、かなり苦しめられました。
並び替えの前には必ず忘れず記載しましょう!