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

如何得到EXCEL行列的最後一筆資料所在位置與資料的總數

答題得分者是:talkshow
fireflybug
一般會員


發表:18
回覆:36
積分:15
註冊:2008-07-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-10-30 15:53:37 IP:220.130.xxx.xxx 訂閱
各位大大好:

請問 DELPHI 開啟 EXCEL 後,我想抓取行(欄)或列的最後一筆資料位置在哪,例如B欄的最後一筆資料在B18,是否有快速的內建方法可用?

又請問B欄位最後一比為B18,有內建方法可以馬上得知B欄總共有幾筆資料嗎?
------
今天的事,留到後天再說....
talkshow
一般會員


發表:1
回覆:4
積分:6
註冊:2008-10-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-10-30 21:43:57 IP:219.140.xxx.xxx 訂閱
rowlast  :=    Excelworksheet1.Cells.SpecialCells(xlCellTypelastCell,  EmptyParam).row;  
collast := Excelworksheet1.Cells.SpecialCells(xlCellTypelastCell, EmptyParam).Column;

如何知道UsedRange的行数和列数?

1.假设该表的左上角在单元格 a1,并且该表中间没有空行和空列,则:

sheets['sheet1'].range['a1'].CurrentRegion.rows.count

返回该表的行数,Columns返回该表的列数



2.可以利用VBA中的SpecialCells函数,返回一个 Range 对象,此对象代表与指定类型及

值相匹配的所有单元格,下面为其可用的常数:



xlCellTypeAllFormatConditions 任意格式的单元格

xlCellTypeAllValidation 具有有效条件的单元格

xlCellTypeBlanks 空单元格

xlCellTypeComments 包含注释的单元格

xlCellTypeConstants 包含常量的单元格

xlCellTypeFormulas 包含公式的单元格

xlCellTypeLastCell 已用区域的最后一个单元格 /////××××//这个常数在确定范围最有用!

xlCellTypeSameFormatConditions 具有相同格式的单元格

xlCellTypeSameValidation 具有相同有效条件的单元格

xlCellTypeVisible 所有可见单元格



比如我们可以利用这个函数确定最后一个包含数据的单元格:

ExcelApp.WorkBooks.ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Activate;

lastRow := ExcelApp.ActiveCell.Row;

lastCol := ExcelApp.ActiveCell.Column;



在用Servers组件 和用 Use comobj 两种方法上调用VBA函数有所不同,前面的方法不能

省略常数(如上面的EmptyParam),但好处是可以直接用其常量(如xlCellTypeLastCell),

而后者则可省略一些默认常数(比如EmptyParam可不用写,不过不知道是不是对所有的都适用)

在不知道VBA函数一些参数是有这种方法比较好,可以像VBA那样直接调用,但也有个很大缺陷

就是不能直接用那些常量,而须是其直接代表的常数(所以有了上面的那张常用常量对照表)
------
我思故我在
編輯記錄
talkshow 重新編輯於 2008-10-30 21:47:08, 註解 無‧
talkshow
一般會員


發表:1
回覆:4
積分:6
註冊:2008-10-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-10-30 21:53:40 IP:219.140.xxx.xxx 訂閱
不過實際應用中,我並不這樣用。我還是會用循環的方式讀取。
因為這些函數有時得到的是最後修改過的cells.
比如我先在cell(200,200)填入數據,然後刪除。這些函數仍然顯示最後cell為200,200
------
我思故我在
fireflybug
一般會員


發表:18
回覆:36
積分:15
註冊:2008-07-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-10-31 08:53:57 IP:220.130.xxx.xxx 訂閱
謝謝大大的回覆,小弟目前還是決定讓B欄位為 "項次" 選項,所以這個欄位要請使用者只要有資料,就必須填上,且由 1  開始遞增,使用循環迴圈方式,一列一列的將欄位資料寫入資料庫中,偵測到b欄位為空白欄位,就代表資料已經結束。

原先想的作法是想直接算出欄位的總數,在跑這個總數的迴圈抓取每一列的資料寫入資料庫。

===================引 用 talkshow 文 章===================
不過實際應用中,我並不這樣用。我還是會用循環的方式讀取。
因為這些函數有時得到的是最後修改過的cells.
比如我先在cell(200,200)填入數據,然後刪除。這些函數仍然顯示最後cell為200,200
------
今天的事,留到後天再說....
系統時間:2024-05-07 14:05:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!