Excel_VBA常用技巧_第01章.range(单元格)对象
- 格式:doc
- 大小:1.00 MB
- 文档页数:57
VBA常用技巧目录VBA常用技巧 (1)第1章Range(单元格)对象 (3)技巧1单元格的引用方法 (3)1-1使用Range属性 (3)1-2使用Cells属性 (4)1-3使用快捷记号 (4)1-4使用Offset属性 (5)1-5使用Resize属性 (6)1-6使用Union方法 (7)1-7使用UsedRange属性 (7)1-8使用CurrentRegion属性 (8)技巧2选定单元格区域的方法 (8)2-1使用Select方法 (8)2-2使用Activate方法 (9)2-3使用Goto方法 (10)技巧3获得指定行、列中的最后一个非空单元格 (10)技巧4定位单元格 (13)技巧5查找单元格 (14)5-1使用Find方法 (14)5-2使用Like运算符 (18)技巧6替换单元格内字符串 (19)技巧7复制单元格区域 (20)技巧8仅复制数值到另一区域 (23)8-1使用选择性粘贴 (23)8-2直接赋值的方法 (24)技巧9单元格自动进入编辑状态 (25)技巧10禁用单元格拖放功能 (25)技巧11单元格格式操作 (26)11-1单元格字体格式设置 (26)11-2设置单元格内部格式 (28)11-3为单元格区域添加边框 (29)11-4灵活设置单元格的行高列宽 (31)技巧12单元格中的数据有效性 (32)12-1在单元格中建立数据有效性 (32)12-2判断单元格是否存在数据有效性 (34)12-3动态的数据有效性 (34)12-4自动展开数据有效性下拉列表 (36)技巧13单元格中的公式 (37)13-1在单元格中写入公式 (37)13-2检查单元格是否含有公式 (38)13-3判断单元格公式是否存在错误 (39)13-4取得单元格中公式的引用单元格 (40)13-5将单元格中的公式转换为数值 (41)技巧14单元格中的批注 (42)14-1判断单元格是否存在批注 (42)14-2为单元格添加批注 (43)14-3删除单元格中的批注 (44)技巧15合并单元格操作 (45)15-1判断单元格区域是否存在合并单元格 (45)15-2合并单元格时连接每个单元格的文本 (46)15-3合并内容相同的连续单元格 (47)15-4取消合并单元格时在每个单元格中保留内容 (49)技巧16高亮显示单元格区域 (50)技巧17双击被保护单元格时不显示提示消息框 (51)技巧18重新计算工作表指定区域 (53)技巧19录入数据后单元格自动保护 (53)技巧20工作表事件Target参数的使用方法 (55)20-1使用单元格的Address 属性 (55)20-2使用Column属性和Row属性 (56)20-3使用Intersect方法 (56)第1章Range(单元格)对象Range对象是Excel应用程序中最常用的对象,一个Range对象代表一个单元格、一行、一列、包含一个或者更多单元格区域(可以是连续的单元格,也可以是不连续的单元格)中选定的单元格,甚至是多个工作表上的一组单元格,在操作Excel 内的任何区域之前都需要将其表示为一个Range对象,然后使用该Range对象的方法和属性。
技巧1 单元格的引用方法在VBA中经常需要引用单元格或单元格区域区域,主要有以下几种方法。
1-1 使用Range属性VBA中可以使用Range属性返回单元格或单元格区域,如下面的代码所示。
#001 Sub RngSelect()#002 Sheet1.Range("A3:F6, B1:C5").Select#003 End Sub代码解析:RngSelect过程使用Select方法选中A3:F6,B1:C5单元格区域。
Range属性返回一个Range对象,该对象代表一个单元格或单元格区域,语法如下:Range(Cell1, Cell2)参数Cell1是必需的,必须为A1 样式引用的宏语言,可包括区域操作符(冒号)、相交区域操作符(空格)或合并区域操作符(逗号)。
也可包括美元符号(即绝对地址,如“$A$1”)。
可在区域中任一部分使用局部定义名称,如Range("B2:LastCell"),其中LastCell 为已定义的单元格区域名称。
参数Cell2是可选的,区域左上角和右下角的单元格。
运行Sub RngSelect过程,选中A3:F6, B1:C5单元格区域,如图1-1所示。
图1-1 使用Range属性引用单元格区域注意如果没有使用对象识别符,Range属性返回活动表的一个区域,如果活动表不是工作表,则该属性无效。
1-2 使用Cells属性使用Cells属性返回一个Range对象,如下面的代码所示。
#001 Sub Cell()#002 Dim icell As Integer#003 For icell = 1 To 100#004 Sheet2.Cells(icell, 1).Value = icell#005 Next#006 End Sub代码解析:Cell过程使用For...Next语句为工作表中的A1:A100单元格区域填入序号。
Cells属性指定单元格区域中的单元格,语法如下:Cells(RowIndex, ColumnIndex)参数RowIndex是可选的,表示引用区域中的行序号。
参数ColumnIndex是可选的,表示引用区域中的列序号。
如果缺省参数,Cells属性返回引用对象的所有单元格。
Cells属性的参数可以使用变量,因此经常应用于在单元格区域中循环。
ActiveCell.Row 表示当前活动单元格所在的行。
1-3 使用快捷记号在VBA中可以将A1引用样式或命名区域名称使用方括号括起来,作为Range属性的快捷方式,这样就不必键入单词“Range”或使用引号,如下面的代码所示。
#001 Sub Fastmark()#002 [A1:A5] = 2#003 [Fast] = 4#004 End Sub代码解析:Fastmark过程使用快捷记号为单元格区域赋值。
第2行代码使用快捷记号将活动工作表中的A1:A5单元格赋值为2。
第3行代码将工作簿中已命名为“Fast”的单元格区域赋值为4。
注意使用快捷记号引用单元格区域时只能使用固定字符串而不能使用变量。
1-4 使用Offset属性可以使用Range对象的Offset属性返回一个基于引用的Range对象的单元格区域,如下面的代码所示。
#001 Sub Offset()#002 Sheet3.Range("A1:C3").Offset(3, 3).Select#003 End Sub代码解析:Offset过程使用Range对象的Offset属性选中A1:A3单元格偏移三行三列后的区域。
应用于Range对象的Offset 属性的语法如下:expression.Offset(RowOffset, ColumnOffset)参数expression是必需的,该表达式返回一个Range对象。
参数RowOffset是可选的,区域偏移的行数(正值、负值或0(零))。
正值表示向下偏移,负值表示向上偏移,默认值为0。
参数ColumnOffset是可选的,区域偏移的列数(正值、负值或0(零))。
正值表示向右偏移,负值表示向左偏移,默认值为0。
运行Offset过程,选中A1:A3单元格偏称三行三列后的区域,如图1-2所示。
图1-2 使用Range对象的Offset属性1-5 使用Resize属性使用Range对象的Resize属性调整指定区域的大小,并返回调整大小后的单元格区域,如下面的代码所示。
#001 Sub Resize()#002 Sheet4.Range("A1").Resize(3, 3).Select#003 End Sub代码解析:Resize过程使用Range对象的Resize属性选中A1单元格扩展为三行三列后的区域。
Resize属性的语法如下:expression.Resize(RowSize, ColumnSize)参数expression是必需的,返回要调整大小的Range 对象参数RowSize是可选的,新区域中的行数。
如果省略该参数,则该区域中的行数保持不变。
参数ColumnSize是可选的,新区域中的列数。
如果省略该参数。
则该区域中的列数保持不变。
运行Resize过程,选中A1单元格扩展为三行三列后的区域,如图1-3所示。
图1-3 使用Resize属性调整区域大小1-6 使用Union方法使用Union方法可以将多个非连续区域连接起来成为一个区域,从而可以实现对多个非连续区域一起进行操作,如下面的代码所示。
#001 Sub UnSelect()#002 Union(Sheet5.Range("A1:D4"), Sheet5.Range("E5:H8")).Select#003 End Sub代码解析:UnSelect过程选择单元格A1:D4和E5:H8所组成的区域。
Union方法返回两个或多个区域的合并区域,语法如下:expression.Union(Arg1, Arg2, ...)其中参数expression是可选的,返回一个Application对象。
参数Arg1, Arg2, ...是必需的,至少指定两个Range对象。
运行UnSelect过程,选中单元格A1:D4和E5:H8所组成的区域,如图1-4所示。
图1-4 使用Union方法将多个非连续区域连接成一个区域1-7 使用UsedRange属性使用UsedRange属性返回指定工作表上已使用单元格组成的区域,如下面的代码所示。
#001 Sub UseSelect()#002 edRange.Select#003 End Su代码解析:UseSelect过程使用UsedRange属性选择工作表上已使用单元格组成的区域,包括空单元格。
如工作表中已使用A1单元格和D8单元格,运行UseSelect过程将选择A1到D8单元格区域,如图1-5所示。
图1-5 使用UsedRange属性选择已使用区域1-8 使用CurrentRegion属性使用CurrentRegion属性返回指定工作表上当前的区域,如下面的代码所示。
#001 Sub CurrentSelect()#002 Sheet7.Range("A5").CurrentRegion.Select#003 End Sub代码解析:CurrentSelect过程使用CurrentRegion属性选择工作表上A5单元格当前的区域,当前区域是一个边缘是任意空行和空列组合成的范围。