線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1365
推到 Plurk!
推到 Facebook!

如何在Word裏的表格一次選取多列?

尚未結案
cgsn
一般會員


發表:7
回覆:3
積分:2
註冊:2004-02-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-30 11:56:19 IP:211.21.xxx.xxx 未訂閱
己經知道用 WordApplication1.ActiveDocument.Tables.Item(1).Cell(1.1).Range.Select; 可以選取表格裏的第一格 那請問如何能夠一次選取多列呢?? 謝謝!
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-31 19:45:23 IP:220.131.xxx.xxx 未訂閱
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;    type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;
  WordApp:Variant;
  NewDoc:Variant;
  NewTable:Variant;
  Range:Variant;
implementation
  uses comobj;
{$R *.dfm}    procedure TForm1.Button1Click(Sender: TObject);
var
 i,j,s:Integer;
begin
 WordApp :=CreateOleObject('word.application');
 WordApp.visible :=True;
 NewDoc :=WordApp.Documents.add;
 Range :=WordApp.Selection.Range;
 NewTable :=NewDoc.tables.Add(range,9,9);
 for i:=1 to 9 do
  for j:=1 to 9 do
   begin
    s:=i*j;
    NewTable.cell(i,j).Range.Text:=IntToStr(i) '*' IntToStr(j) '=' IntToStr(s);
  end;
end;    //第一種:欄位選取合併方式
procedure TForm1.Button2Click(Sender: TObject);
begin  
  NewTable.Cell(1, 1).Merge (NewTable.Cell(1, 9));
end;    end.    //---------------------------------------------------------
//第二種:列選取合併方式
procedure TForm1.Button2Click(Sender: TObject);
var
 QRow :Variant;
begin
   //選擇第一列
   QRow:=NewTable.Rows.Item(1);
   //執行合併
   QRow.Cells.Merge;
end;
網海無涯,唯學是岸! 發表人 - qoo1234 於 2004/08/31 20:58:34
cgsn
一般會員


發表:7
回覆:3
積分:2
註冊:2004-02-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-01 19:53:53 IP:203.67.xxx.xxx 未訂閱
感謝qoo大大... 不過大大可能誤會我的意思了.... 我的意思是...像在Word裏面可以一次托拉選取多列...然後直接選刪除列... 那就可以一次刪除多列了..... 目前是以迴圈的方式一列一列的刪除.... 不過這樣速度太慢了.... 不知道有沒有別的比較快的方法可做到這樣的功能 ^^"
cgsn
一般會員


發表:7
回覆:3
積分:2
註冊:2004-02-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-01 19:58:29 IP:203.67.xxx.xxx 未訂閱
貼上程式碼: if WordApplication1.ActiveDocument.Tables.Item(1).Rows.Count > 1 then begin While WordApplication1.ActiveDocument.Tables.Item(1).Rows.Count > 1 do begin WordApplication1.ActiveDocument.Tables.Item(1).Cell(WordApplication1.ActiveDocument.Tables.Item(1).Rows.Count,1).Select; WordApplication1.Selection.Rows.Delete; end; end;
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-02 08:31:25 IP:218.163.xxx.xxx 未訂閱
要選取一個範圍可以如下 :
function SelectTableRange(t:Table; r1,c1,r2,c2:integer):Range;
var 
  x1,x2:olevariant;
begin
  x1:=t.cell(r1,c1).Range.Start;
  x2:=t.cell(r2,c2).Range.end_;
  Result:=ActiveDocument.Range(x1,x2);
end;
若要選取連續的row也可以先選一row後用MoveEnd或MoveStart 如果Visible=True也可以
var vUnit,Extend:Olevariant;
begin
  vUnit:=wdLine;
  Extend:=wdExtend;
  table.cell(1,1).select;
  selection.MoveDown( Vunit, I, Extend );
end;
系統時間:2024-07-01 3:52:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!