У меня есть фрагмент кода, который я использую для форматирования диапазона ячеек в Excel. Он отлично работает в Excel 2007, но когда диапазон составляет всего 1 столбец и это Excel 2003 вместо 2007, я получу сообщение об ошибке, сообщающее, что я назначаю недопустимое значение для стиля линии границы.
** ценные вещи, такие как "xlInsideHor horizontal", я объявил их как ПОСТОЯННЫЕ с правильными значениями.
Пожалуйста, помогите.
procedure formatCells(FRCELLROW, FRCELLCOL, TOCELLROW, TOCELLCOL: Integer;
TOPSTYLE, TOPCOLOUR, TOPWEIGHT,
BOTTOMSTYLE, BOTTOMCOLOUR, BOTTOMWEIGHT,
LEFTSTYLE, LEFTCOLOUR, LEFTWEIGHT,
RIGHTSTYLE, RIGHTCOLOUR, RIGHTWEIGHT: Integer;
INNERVSTYLE, INNERVCOLOUR, INNERVWEIGHT: Integer;
INNERHSTYLE, INNERHCOLOUR, INNERHWEIGHT: Integer;
HORIZONTALCELLALIGNMENT: Integer;
FontBold: Boolean;
NumberFormat: String
);
var
tmpRange: Variant;
begin
tmpRange := eclApp.range[eclApp.Cells[FRCELLROW, FRCELLCOL],
eclApp.Cells[TOCELLROW, TOCELLCOL]];
tmpRange.Borders[xlEdgeTop].LineStyle := TOPSTYLE;
if TOPSTYLE <> xlNone then begin
tmpRange.Borders[xlEdgeTop].ColorIndex := TOPCOLOUR;
tmpRange.Borders[xlEdgeTop].Weight := TOPWEIGHT;
end; //if
tmpRange.Borders[xlEdgeBottom].LineStyle := BOTTOMSTYLE;
if BOTTOMSTYLE <> xlNone then begin
tmpRange.Borders[xlEdgeBottom].ColorIndex := BOTTOMCOLOUR;
tmpRange.Borders[xlEdgeBottom].Weight := BOTTOMWEIGHT;
end; //if
tmpRange.Borders[xlEdgeLeft].LineStyle := LEFTSTYLE;
if LEFTSTYLE <> xlNone then begin
tmpRange.Borders[xlEdgeLeft].ColorIndex := LEFTCOLOUR;
tmpRange.Borders[xlEdgeLeft].Weight := LEFTWEIGHT;
end; //if
tmpRange.Borders[xlEdgeRight].LineStyle := RIGHTSTYLE;
if RIGHTSTYLE <> xlNone then begin
tmpRange.Borders[xlEdgeRight].ColorIndex := RIGHTCOLOUR;
tmpRange.Borders[xlEdgeRight].Weight := RIGHTWEIGHT;
end; //if
tmpRange.Borders[xlInsideVertical].LineStyle := INNERVSTYLE;
if INNERVSTYLE <> xlNone then begin
tmpRange.Borders[xlInsideVertical].ColorIndex := INNERVCOLOUR;
tmpRange.Borders[xlInsideVertical].Weight := INNERVWEIGHT;
end; //if
tmpRange.Borders[xlInsideHorizontal].LineStyle := INNERHSTYLE;
if INNERHSTYLE <> xlNone then begin
tmpRange.Borders[xlInsideHorizontal].ColorIndex := INNERHCOLOUR;
tmpRange.Borders[xlInsideHorizontal].Weight := INNERHWEIGHT;
end; //if
tmpRange.HorizontalAlignment := HORIZONTALCELLALIGNMENT;
tmpRange.Font.Bold := FontBold;
tmpRange.NumberFormat := NumberFormat;
end; //