// CopyColumn 2005.12.23 by あすかぜ // 行・列の移動・コピーの関数を提供します。 // 編集・再配布は自由です。 // // 使い方: // このファイルは「CopyColumn.cms」という名前で Macro フォルダに置いてください。 // 任意のマクロファイル内で、 // CopyColumn.moveColumn(from, to); // CopyColumn.copyColumn(from, to); // CopyColumn.moveRow(from, to); // CopyColumn.copyRow(from, to); // などとすると実行できます。 // // メニューコマンドの SelectColumn(); Copy(); Paste(); などを使った実装も可能ですが、 // ここではセル単位での読み書きで実装しています。 // 列の移動 function moveColumn(from, to){ if(to > from){ to++; } InsertCol(to); if(from >= to){ from++; } for(y=1; y<=Bottom; y++){ [to,y] = [from,y]; } DeleteCol(from); } // 列のコピー function copyColumn(from, to){ InsertCol(to); if(from >= to){ from++; } for(y=1; y<=Bottom; y++){ [to,y] = [from,y]; } } // 行の移動 function moveRow(from, to){ if(to > from){ to++; } InsertRow(to); if(from >= to){ from++; } for(x=1; x<=Right; x++){ [x,to] = [x,from]; } DeleteRow(from); } // 行のコピー function copyRow(from, to){ InsertRow(to); if(from >= to){ from++; } for(x=1; x<=Right; x++){ [x,to] = [x,from]; } } // 以下直接実行した場合の処理 // 例として、1列目から10列目までを2列ずつにする for(i=10; i>0; i--){ // コピーで列番号が変わるので、影響を小さくするため右から順に処理 copyColumn(i, i+1); // i 列目を i+1 列目にコピー }