Delphi Programming / Object Pascal
[掲載 2009年06月17日] [更新 2013年12月15日] エクセル操作フォームEx |
エクセル操作フォームEx 参考コード類
セルの結合 |
動作確認等 |
Windows 7 U64(SP1) + Delphi XE Pro + Excel 2010 |
結合セルの Range オブジェクトで指定する場合です.
Range オブジェクトの MergeCells プロパティを True にすると結合します. |
|
図1
実行画面 |
procedure TplExcelFormEx1.Button1Click(Sender: TObject);
var
ARange : Txlf2000Range;
begin
ARange := xlfExcelSheet.Cells.Range['B2', 'C5'];
ARange.MergeCells := True;
end;
R1C1 形式でセル範囲を指定したい場合は,R1C1 形式の値を A1 形式に変換してもいいですが,以下のような方法もあります.このコードは,R2C2 から R5C7 の範囲のセルを結合します.
このサンプルでは結合したセルの行数と列数を取得して表示するコードを追加しています. |
|
図2
実行画面 |
procedure TplExcelFormEx1.Button2Click(Sender: TObject);
var
ARange : Txlf2000Range;
StartCell : OleVariant;
FinalCell : OleVariant;
RowCnt : Integer;
ColCnt : Integer;
strText : String;
begin
StartCell := xlfExcelSheet.Cells.Item[2, 2];
FinalCell := xlfExcelSheet.Cells.Item[5, 7];
ARange := xlfExcelSheet.Cells.Range[StartCell, FinalCell];
ARange.MergeCells := True;
//指定セルの結合行数と列数を調査
//調査するセルの指定を1つだけにしないとエラーが発生する
ARange := xlfExcelSheet.Cells.Range['B2', 'B2'];
if ARange.MergeCells then begin
RowCnt := ARange.MergeArea.Rows.Count;
ColCnt := ARange.MergeArea.Columns.Count;
strText := '結合行数は ' + IntToStr(RowCnt) + ' です' + sLineBreak +
'結合列数は ' + IntToStr(ColCnt) + ' です';
MessageBox(Handle, PChar(strText), '結合した行数と列数', MB_ICONINFORMATION);
end else begin
strText := 'このセルは結合されていません';
MessageBox(Handle, PChar(strText), '結合した行数と列数', MB_ICONINFORMATION);
end;
end;
|
図3
実行画面 |
procedure TplExcelFormEx1.Button3Click(Sender: TObject);
var
ARange : Txlf2000Range;
RowCnt : Integer;
ColCnt : Integer;
strText : String;
begin
ARange := xlfExcelSheet.Cells.Range['B2', 'C5'];
ARange.Select;
ARange.MergeCells := True;
//指定セルの結合行数と列数を調査
//調査するセルの指定を1つだけにしないとエラーが発生する
ARange := xlfExcelSheet.Cells.Range['B2', 'B2'];
if ARange.MergeCells then begin
RowCnt := ARange.MergeArea.Rows.Count;
ColCnt := ARange.MergeArea.Columns.Count;
strText := '結合行数は ' + IntToStr(RowCnt) + ' です' + sLineBreak +
'結合列数は ' + IntToStr(ColCnt) + ' です';
MessageBox(Handle, PChar(strText), '結合した行数と列数', MB_ICONINFORMATION);
end else begin
strText := 'このセルは結合されていません';
MessageBox(Handle, PChar(strText), '結合した行数と列数', MB_ICONINFORMATION);
end;
end;
procedure TplExcelFormEx1.Button4Click(Sender: TObject);
var
ARange : Txlf2000Range;
begin
//選択セルのRangeオブジェクトを取得して結合
ARange := Txlf2000Range(xlfExcelApp.Selection[0]);
ARange.MergeCells := True;
end;
セルの結合 - コマンド ID を使用した選択中のセル結合 |
上と同じく現在選択中のセルを結合します.コマンド ID を使用した方法です.
このコマンド ID は選択中のセルを結合して,文字列の書式を左右中央揃えにします. |
procedure TplExcelFormEx1.Button5Click(Sender: TObject);
var
objCmdBars : OleVariant;
begin
objCmdBars := xlfExcelApp.CommandBars;
try
objCmdBars.FindControl(ID := 402).Execute;
except
end;
end;
結合したセルを解除するには,UnMerge メソッドを実行します.下のコードは,結合したセルを 2 秒後に結合を解除します. |
procedure TplExcelFormEx1.Button1Click(Sender: TObject);
var
ARange : Txlf2000Range;
begin
ARange := xlfExcelSheet.Cells.Range['B2', 'C5'];
ARange.MergeCells := True;
Sleep(2000);
ARange.UnMerge;
end;
|