Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2009年05月27日] [更新 2013年12月18日] エクセル操作フォームEx
エクセル操作フォームEx   参考コード類
データのソート
動作確認等 Windows 7 U64(SP1) + Delphi XE Pro + Excel 2010







データのソート


データをソート (整列) する例です.ソート対象の Range オブジェクトは OleVariant 型でないとエラーが発生してうまくいきませんでした.


リスト1 
procedure TplExcelFormEx1.Button1Click(Sender: TObject);
var
  ARange    : OleVariant;    //何故かExcelRangeでは不可
  Key1Range : Txlf2000Range; //Sortの第1KeyのRangeオブジェクト
  Key2Range : Txlf2000Range; //Sortの第2KeyのRangeオブジェクト
  Key3Range : Txlf2000Range; //Sortの第3KeyのRangeオブジェクト
  pBool     : OleVariant;
begin
  pBool:=False;
  //第1keyはC列
  Key1Range := xlfExcelSheet.Range['C5', 'C48'].EntireColumn;
  //第2KeyはD列
  Key2Range := xlfExcelSheet.Range['D5', 'D48'].EntireColumn;
  //第3KeyはE列
  Key3Range := xlfExcelSheet.Range['E5', 'E48'].EntireColumn;

  //対象となる行のRangeオブジェクト.何故かExcelRangeではエラー発生
  ARange := xlfExcelSheet.Range['C5', 'E48'].EntireRow;
  ARange.Sort(Key1Range,        //Sortの第1Key
              xlAscending,      //昇順
              Key2Range,        //Sortの第2Key
              EmptyParam,       //Sortの要素種類
              xlDescending,     //Sortの第2Keyは降順
              Key3Range,        //Sortの第3Key
              xlAscending,      //Sortの第3Keyは昇順
              xlYes,            //対象範囲の第1行(列)はタイトル
              EmptyParam,
              pBool,            //大文字と小文字を区別する時はTrue
              EmptyParam,
              EmptyParam);      //並替えの種類.xlPinYinかxlStroke
end;