我用程序控制Excel,要把一个区域中的几个单元格合并, 比如:
  ExcelApp.ActiveSheet.Range['A2:A4'].Select;
  ExcelApp.Selection.MergeCells := True;
在EXCEL中列号用字母表示,但是我的程序中如果只知道数字的列号,且这个列号不是固定的,如:要把第i行j列,第i+1行,第j+1列这个区域的单元格合并起来,那又怎么办呢?

解决方案 »

  1.   

    如果j<26还好说,但超过26就比较麻烦了,有没有简单的方法?
      

  2.   

    如果j<26还好说,但超过26就比较麻烦了,有没有简单的方法?
    把ASCIID码转换成对应的字母用什么函数?
      

  3.   

    a-z 26
    aa-zz 26*26
    这么多还不够用啊?
      

  4.   

    function CNoToCol(Col_n: Word): string;
    begin
      if Col_n > 256 then
      begin
        MessageDlg('Invalid column number ('
          + IntToStr(Col_n) + '), the maximum column number is 256.', mtInformation, [mbok], 0);
        Abort;
      end; //if
      if Col_n > 26 then
      begin
        Result := CHR((Col_n div 26) + ORD('A') - 1);
        Col_n := (Col_n mod 26);
        if Col_n = 0 then
        begin
          Result := CHR(ORD(Result[1]) - 1) + 'Z';
          Exit;
        end; //if
      end
      else
        Result := '';
      Result := Result + CHR(Col_n + ORD('A') - 1);
    end;function NoToRange(r1, c1: Word; r2: Word = 0; c2: Word = 0): string;
    begin
      if (r2 = 0) or (c2 = 0) then
        Result := CNoToCol(c1) + IntToStr(r1)
      else
        Result := CNoToCol(c1) + IntToStr(r1) + ':' + CNoToCol(c2) + IntToStr(r2);
    end; ExcelApp.ActiveSheet.Range[NotoRange(2,2,2,4)].Select;
     ExcelApp.Selection.Merge; NotoRange(BeginRow,BeginCol,EndRow,EndCol)