非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

ExcelVBAエラー「削除されたレコード: /xl/worksheets/sheet.xml パーツ内の並べ替え」の対処法

   

Excelマクロを作っていった過程でこんなエラーに見舞われました。そのマクロを仕込んだExcelファイルを開く際に発生するものです。「削除されたレコード: /xl/worksheets/sheet3.xml パーツ内の並べ替え」とはどんなエラーなのか?

 

 

その原因はVBAソース内に以下のような並び替えするコードがある場合に置きます。このようなコードはマクロの記録で生成させてそのまま転用させるケースが多いのでしょう。マクロで繰り返し使うことでSordKeyが被ってしまうことによるエラーです。

 

Sheets("Sheet1").sort.SortFields.Add Key:=Range("A6:A100"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With Sheets("Sheet1").sort
  .SetRange Range("A5:AB100")
  .Header = xlYes
  .MatchCase = False
  .Orientation = xlTopToBottom
  .SortMethod = xlPinYin
  .Apply
End With
 

 

 

これを解決させるためには、SortFieldsをクリアすることが必要になります。1行目を加えればOKです。

 

Sheets("Sheet1").sort.SortFields.Clear '追加
Sheets("Sheet1").sort.SortFields.Add Key:=Range("A6:A100"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With Sheets("Sheet1").sort
  .SetRange Range("A5:AB100")
  .Header = xlYes
  .MatchCase = False
  .Orientation = xlTopToBottom
  .SortMethod = xlPinYin
  .Apply
End With
 

 

スポンサーリンク

 - Excel, VBA