2010-05-18 6 views
0

Excel에서 셀 범위를 지정하는 데 사용하는 코드 조각이 있습니다. Excel 2007에서는 잘 작동하지만 범위가 1 열만이고 2007 대신 Excel 2003 인 경우 테두리의 선 스타일에 잘못된 값을 할당한다고 말하는 오류가 발생합니다.델파이를 사용하는 OLE 자동화로 단일 엑셀 열 포맷 문제

** "xlInsideHorizontal"과 같은 귀중품으로, 나는 적절한 값으로 일정하다고 선언했다.

도와주세요.

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; // 

답변

1

마찬가지로 "1"행 높이를 지정하면 동일한 오류가 발생합니다. 내부 스타일은 인접한 셀 사이의 선을 나타냅니다. "1"열 너비 범위에는 가로로 인접한 셀이 없으므로 세로 내부 선이 없습니다. Excel 2003에서는 잘못된 값이 무시되는 반면 Excel 2003에서는 오류가 발생합니다.

"formatCells"프로 시저에 값을 전달하기 전에 범위의 행 수와 행 수를 테스트하고이 중 하나에서 "1"이 발생하면 "xlNone"(-4142) 대신 " INNERVSTYLE, INNERVCOLOUR, INNERVWEIGHT "또는"INNERHYSTYLE, INNERHCOLOUR, INNERHWEIGHT "로 표시됩니다.