【Excel VBA】パーツ内の並べ替えエラーの発生(並び替え時エラー)

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が被ってエラーが起こってしまうのが理由のようです。

当初は原因が全くわからず、かなり苦しめられました。

並び替えの前には必ず忘れず記載しましょう!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA