如何得到EXCEL行列的最後一筆資料所在位置與資料的總數 |
答題得分者是:talkshow
|
fireflybug
一般會員 發表:18 回覆:36 積分:15 註冊:2008-07-17 發送簡訊給我 |
|
talkshow
一般會員 發表:1 回覆:4 積分:6 註冊:2008-10-27 發送簡訊給我 |
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 發送簡訊給我 |
|
fireflybug
一般會員 發表:18 回覆:36 積分:15 註冊:2008-07-17 發送簡訊給我 |
謝謝大大的回覆,小弟目前還是決定讓B欄位為 "項次" 選項,所以這個欄位要請使用者只要有資料,就必須填上,且由 1 開始遞增,使用循環迴圈方式,一列一列的將欄位資料寫入資料庫中,偵測到b欄位為空白欄位,就代表資料已經結束。
原先想的作法是想直接算出欄位的總數,在跑這個總數的迴圈抓取每一列的資料寫入資料庫。 ===================引 用 talkshow 文 章=================== 不過實際應用中,我並不這樣用。我還是會用循環的方式讀取。 因為這些函數有時得到的是最後修改過的cells. 比如我先在cell(200,200)填入數據,然後刪除。這些函數仍然顯示最後cell為200,200
------
今天的事,留到後天再說.... |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |