一、从功能上来说,Select代表选定对象,Activate代表激活对象。
二、从数量上来说,Select可以选定多个对象,Activate只能激活一个对象。
三、对于单个对象,Select和Activate是一样的。
四、Activate的对象必定在Select对象之中。当选定了多个对象时,其中某个对象必定是激活的对象。在已经Select的对象中,可以任意指定Activate的对象。如果Activate了当前Select对象之外的对象,则相当于重新执行了一次Select并激活。
五、在每次重新Select之后,则系统会自动Activate其中的某个对象。
select,selection
Activate,activecell
activecell.CurrentRegion.Select
1 选取B列第一个非空单元格
If Range("B1") = "" Then
Range("B1").End(xlDown).Selcet
Else
Range("B1").Selcet
End if
2 选取B列最后一个非空单元格
Range("B65536".End(xlUp).Select
3 选取11列最左边非空单元格
If Range("A11") = "" Then
Range("A11").End(xlToRight).Selcet
Else
Range("A11").Selcet
End if
4 选取第17行最右边非空单元格
Range("IV17").End(xlToLeft).Select
(end()方法单元格的选取,从空到非空,从非空到空;)
1 返回选取区域的总行数和总列数
Selection.Rows.count
Selection.Columns.count
2 返回选取区域的第一行的行号
Selection.Row
3 返回选取区域左上角的单元格
Selection.Range("A1").Address
4 返回选取区域右上角的单元格
Cells(Selection.Row,Selection.Column+Selection.Columns.Count-1).Address
5 返回选取区域左下角的单元格
Cells(Selection.Row+Selection.Row.Count-1,Selection.Column).Address
5 返回选取区域右下角的单元格
Selection.Cells(Selection.Cells.count).Address
1 Cells.select
2 Rows.select
3 Columns.select
1 选取当前已使用的单元格:ActiveSheet.UsedRange.Select
2 选取的指定单元格相邻的区域:Range("address").CurrentRegion.Select
3 选取特定内容单元格:Range("address").SpecialCells(单元格类型变量)
Offset(A1,2,1,6,3),表示,以A1为参照点,偏移(2,1),选取6行3列;
Range("A1").Offset(2,1).Resize(6,3).Select
选择某一列的全部空行
Columns(1).specialCells(xlCellTypeBlanks).EntireRow
利用定义名称获取对象
Sheets(1).Shapes("按钮 2").Width = Sheets(1).Shapes("按钮 1").Width * 2
利用集合中的索引号来调用对象。
Sheets(1).Shapes(i).Width = 100
前面的对象引用方式可以确保总能正确的引用对象,然而却是牺牲效率来实现的。当所引用的对象是当前活动对象时VBA提供了简化的引用方式。
在引用活动对象时是不需要罗列其上层对象的,而是直接使用“ActiveCell”或者“ActiveWorkbook”等等。
在写法上较后者更简洁,而且在执行效率上也有大大的优势。
With语句的功能是代码减肥,且加快快程序执行速度。不过它的前提条件是同一对象需要多次引用时。
如果在工作表事件中使用Me,则它代表当前工作表;如果在工作簿事件中使用Me,则它代表工作簿;如果在窗体中使用Me,则它代表窗体对象。
Range("ZZ1048576")——表示ZZ1048576单元格,在Excel 2003中是无效的引用,因为Excel 2003的最大行不超过65536行,最大列不超过IV列
Range对象的SpecialCells方法可以返回一代表与指定类型和值匹配的区域。它的具体参数为:
表达式.SpecialCells(Type,Value)其中“表达式”表示单元格对象,“Type”参数表未单元格类型,“Value”参数是可选参数,只在“Type”参数为xlCellTypeConstants或xlCellTypeFormulas时用,用于确定结果中应包含哪几类单元格。
Resize用于调整指定区域的大小,返回代表调整后的区域。它有具体语法为:Range.Resize(RowSize,ColumnSize)
其中参RowSize代表重置后的行数,ColumnSize代表重置后的列数。两个参数皆为可选参数,
Range对象的Offset属性可以返回一个Range对象,代表位于指定单元格区域的一定的偏移量位置上的区域。其具体语法如下:
Range.Offset(RowOffset,ColumnOffset)
Union:单元格的合集
单元格合集即将多个单元格或者区域并为一个区域。
在工作中,需要用到合集的地方较多,特别在查找目标单元格时。引用区域集合可用Application对象的Union方法,其具体语法为:
Intersect:单元格、区域的交集
交集是指两个或者是多个区域的重叠部分。
End:引用源区域的区域尾端的单元格
如果活动单元格在一个较大的数据区域中间,按下快捷键【Ctrl+上箭头】、【Ctrl+下箭头】、【Ctrl+左箭头】、【Ctrl+右箭头】可以迅速将当前单元格移至已用区域的边缘;如果整个工作表均为空白则可以在最小行、最小列或者最大行、最大列之间切换;如果在空白区向数区域使用同方向的快捷键,则可以定位于该行(列)的第一个或者最后一个非空单元格。
Range对象的End属性正好对应于以上四个快捷键,可以实现最上端、最下端、最左端和最右端的切换。它的具体语法为:
Range.End(Direction)