for i := 1 to 10 do
begin
Range := Sheet.Range[sheet.cells[i,1],sheet.cells[i,5]];
if Range.MergeCells then
ShowMessage('存在合并单元格');
调试出现错误。
求高手知道如何在选定excel区域内查找是否有合并单元格。
begin
Range := Sheet.Range[sheet.cells[i,1],sheet.cells[i,5]];
if Range.MergeCells then
ShowMessage('存在合并单元格');
调试出现错误。
求高手知道如何在选定excel区域内查找是否有合并单元格。
function IsInMergeArea(XSheet: Variant; Row,
Col: Integer): boolean;
var
Area: Variant;
AreaRow, AreaCol : Integer;
begin
Area := XSheet.Cells[Row, Col].MergeArea;
AreaRow := Area.Row;
AreaCol := Area.Column;
Result := ( AreaRow <> Row ) or ( AreaCol <> Col );
end;procedure TForm1.Button1Click(Sender: TObject);
var
XBooks : Variant;
XBook : Variant;
XSheet: Variant;
UsedRange : Variant;
HasMerged: Boolean;
Row, Col, MinRow, MinCol, MaxRow, MaxCol: Integer;
begin
XBooks := ExcelApplication1.Workbooks;
XBook := XBooks.Open('e:\test.xls');
XSheet := XBook.ActiveSheet;
UsedRange := XSheet.UsedRange;
MinRow := UsedRange.Row;
MaxRow := MinRow + usedRange.Rows.Count - 1;
MinCol := UsedRange.Column;
MaxCol := MinCol + UsedRange.Columns.Count - 1;
HasMerged := false;
Row := MinRow;
while( ( not HasMerged ) and ( Row <= MaxRow ) ) do
begin
Col := MinCol;
while( ( not HasMerged ) and ( Col <= MaxCol ) ) do
begin
HasMerged := IsInMergeArea( XSheet, Row, Col );
Inc(Col);
end;
Inc(Row);
end;
if( HasMerged ) then
begin
ShowMessage( '有合并区域!');
end;
end;