全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3611
推到 Plurk!
推到 Facebook!

Delphi控制Excel之Range問題

尚未結案
l630521
資深會員


發表:15
回覆:349
積分:372
註冊:2003-02-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-15 18:45:43 IP:210.66.xxx.xxx 未訂閱
請問各位前輩,下面這個語法 Range("D:D,E:E").Select 如果要改成用R1C1的方式,不知該如何下? 我在Delphi】Delphi控制Excel2000操作全集 http://delphi.ktop.com.tw/topic.php?topic_id=29495 有看到這種用法 series:=achart.chart.seriescollection; range:=sheet1!r2c3:r3c9; series.add(range,true); 可是我卻無法這樣使用,請各位前輩指教!謝謝! Ian
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-15 21:16:42 IP:61.71.xxx.xxx 未訂閱
引言: 請問各位前輩,下面這個語法 Range("D:D,E:E").Select 如果要改成用R1C1的方式,不知該如何下? 我在Delphi】Delphi控制Excel2000操作全集 http://delphi.ktop.com.tw/topic.php?topic_id=29495 有看到這種用法 series:=achart.chart.seriescollection; range:=sheet1!r2c3:r3c9; series.add(range,true); 可是我卻無法這樣使用,請各位前輩指教!謝謝! Ian
....
uses ComObj;
....    var cellrange: string;
    msexcel, Worksheet, sheetrange: oleVariant;
begin
     msexcel:= CreateOleObject('Excel.Application');
     msexcel.Workbooks.Add;
     msexcel.Workbooks[1].Worksheets[1].Name:= 'Sheet1';
     Worksheet:= msexcel.Workbooks[1].Worksheets['Sheet1'];
     ......
     msexcel.Workbooks[1].Worksheets['Sheet1'].Activate;
     cellrange:= 'R1:C1';
     sheetrange:= msexcel.Workbooks[1].Worksheets['Sheet1'].Range[cellrange];
發表人 - P.D. 於 2004/06/15 21:17:58
l630521
資深會員


發表:15
回覆:349
積分:372
註冊:2003-02-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-16 10:12:09 IP:210.66.xxx.xxx 未訂閱
P.D.前輩,我剛才試了一下
cellrange:= 'R1:C1';
msexcel.Workbooks[1].Worksheets['Sheet1'].Range[cellrange].Select;
選到的卻是引用樣式A1方式,我需要引用樣式R1C1的方式, 也就是說 在 R1C1 引用樣式中,Excel 使用"R"加行數位和"C"加列數位來指示儲存格的位置。例如,儲存格絕對參照 R1C1 與 A1 引用樣式中的絕對參照 $A$1 等價。 所以我試著用
cellrange:= 'Sheet1!R1C1';
msexcel.Workbooks[1].Worksheets['Sheet1'].Range[cellrange].Select;
這樣是沒辦法用的,請問我要如何才能用這種表示法呢? Ian
jumo
一般會員


發表:33
回覆:65
積分:24
註冊:2002-04-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-16 10:47:03 IP:211.21.xxx.xxx 未訂閱
請試試看下面的方法 ExcelApp.ActiveSheet.Range['C1:R1'].Select
l630521
資深會員


發表:15
回覆:349
積分:372
註冊:2003-02-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-16 10:59:38 IP:210.66.xxx.xxx 未訂閱
謝謝jumo的回答, ExcelApp.ActiveSheet.Range['C1:R1'].Select的方式選擇到的還是 Column: 3~18 Row: 1的範圍, 我要的是選到A1的格子!謝謝! Ian
jumo
一般會員


發表:33
回覆:65
積分:24
註冊:2002-04-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-16 12:33:37 IP:211.21.xxx.xxx 未訂閱
您可以將 C1:R1 自行改掉就可以了 ExcelApp.ActiveSheet.Range['A1'].Select 這樣應該就只會選擇到 A1 如果要選擇一個範圍的話, 可以用下面的方法 ExcelApp.ActiveSheet.Range['A1:R5'].Select
l630521
資深會員


發表:15
回覆:349
積分:372
註冊:2003-02-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-06-16 13:02:34 IP:210.66.xxx.xxx 未訂閱
我的意思是Excel有兩種樣式可以用, 『引用樣式A1』方式,『引用樣式R1C1』的方式, 也就是說 在 R1C1 引用樣式中,Excel 使用"R"加行數位和"C"加列數位來指示儲存格的位置。例如,儲存格絕對參照 R1C1 與 A1 引用樣式中的絕對參照 $A$1 等價。 所以我說的R1C1是第一個Column,第一個Row就是A1 Ian
raymond5
一般會員


發表:5
回覆:13
積分:3
註冊:2003-10-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-06-17 15:35:14 IP:61.219.xxx.xxx 未訂閱
据敝人所知Excel內對定址用R1C1的方式可能要改用Cells的方式,敝人曽在Excel的巨集中使用Cells是可以的,也可用變數傳進去,以下這個例子希望能符合您的要求: p = Range("A3").End(xlToRight).Column Range(Cells(1, 1), Cells(1, p)).Select Raymond Lee
------
Raymond Lee
l630521
資深會員


發表:15
回覆:349
積分:372
註冊:2003-02-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-06-17 16:36:56 IP:210.66.xxx.xxx 未訂閱
我試了很多種方式,Excel在某些地方看得懂,某些地方看不懂R1C1的引用樣式,像Range['A1']就無法用Range['Sheet1!R1C1']來表示,而ExcelChart1.SeriesCollection(2).XValues := '=Sheet1!R2C5:R250C5';就可以,可能是我的觀念不清楚吧! 我最近是在寫一個class,功能是可以將一個DataSet將成Excel,以及畫出所設定的統計圖,本來想用TField.Index來指定第n個數列的,所以才需要用到R1C1的方式,後來只有另尋他法,而我用的方法和raymond5一樣,所以分數就給raymond5了。 謝謝P.D.和jumo的熱心幫忙! Ian
系統時間:2024-06-24 21:08:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!