2006/06/22 | 如何知道UsedRange的行数和列数?
类别(语言类学习笔记) | 评论(0) | 阅读(649) | 发表于 11:33
如何知道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那样直接调用,但也有个很大缺陷
就是不能直接用那些常量,而须是其直接代表的常数(所以有了上面的那张常用常量对照表)
0

评论Comments