vba range单元格及相应操作代码 | 您所在的位置:网站首页 › vba获取当前单元格行列号的方法是什么 › vba range单元格及相应操作代码 |
在VBA中,可以使用Worksheet或Range对象的Range属性来引用单元格。 1.引用单个固定的单元格区域 这种方法实际就是通过单元格地址来引用单元格。 Sub rng() Range("A1:A10").Value=200 '参数是表示单元格地址(A1样式)的字符串 Dim n As String n="B1:B10" range(n)=100 End Sub2.要引用定义为名称的单元格 可以将Range属性的参数设置为表示名称名的字符串或变量。 定义单元格区域的名称名 操作步骤:公式--名称管理器 Range("C_Date").Value=100 3.引用多个不连续的单元格区域如果要引用多个不连续的单元格区域,可以将Range属性的参数设置为一个用逗号分隔的多个单元格地址组成的字符串。 注意:无论有多少个区域,参数都只是一个字符串,参数中各个区域的地址间用逗号分隔。 range("A1:A10,A4:E6,C3:D9").Select '选中多个不连续的单元格区域4.引用多个区域的公共区域 如果要引用多个区域的公共区域,可以将Range属性的参数设置为一个用空格分隔的多个单元格地址组成的字符串。 Range("B1:B10 A4:D6").Value=100 '尽管中间有空格,但参数只是一个字符串5.引用两个区域围成的矩形区域 如果给Range属性设置两个用逗号隔开的参数,就可以引用这两个区域围成的矩形区域。 range("B6:B10","D2:D8").Select用Cells属性引用单元格 使用Worksheet或Range对象的Cells属性引用单元格,是另一种常见的引用方式。这种方式通过单元格所在的行、列号或索引号来引用单元格。 1、引用工作表中指定行列交叉的单元格 Activesheet.Cells(行号,列号).Value=20或 Activesheet.Cells(行号数字3,"D"列标).Value=20 '数字不需要加双引,字母需要加双引即:其中,行号只能是数字,而列标可以是数字也可以是字母。 工作表对象.Cells(行号,列标)2.引用单元格区域中的某个单元格 以Range为对象时,则Cells(行号,列号)以该区域为准从1开始算起。 Range("B3:F9").Cells(2,3)=100 '以Range为对象时,则Cells(行号,列号)以该区域为准从1开始算起。3.将Cells属性的返回结果设置为Range属性的参数 Range(Cells(1,1),Cells(10,5)).Select '选中当前工作表的A1:E10单元格 '这行代码和下面的两行代码是等效的。 Range("A1","E10").Select Range(Range("A1"),Range("E10")).Select4.使用索引号引用单元格 Cells是工作表中所有单元格组成的集合,可以使用索引号引用该集合中的某个单元格。 ActiveSheet.Cells(2).Value=200 '2是索引号,告诉VBA,现在引用的是ActiveSheet中的第2个单元格 #从第1行按1开始数起
如果引用的是Range对象的Cells属性,索引号的范围为1到这个区域包含的单元格的个数。 Range("B3:F9").Cells(8).Value=100 '即引用的是B3:F9单元格区域中的第8个单元格。但索引号可以大于区域中包含的单元格个数。如果索引号大于单元格个数,系统会自动将单元格区域在行方向上进行扩展(列数不变)。
如果不设置参数,Cells属性返回指定区域中的所有单元格。 Activesheet.Cells.Select Range("B3:F9").Cells.Select引用单元格,最简短的快捷方式 可以直接将A1样式的单元格地址,或定义为名称的名称名写在中括号中来引用某个单元格区域,这是更为简便、快捷的引用方式。 [B2] 'B2单元格 [A1:D10] 'A1:D10单元格区域 [A1:A10,C1:C10,E1:E10] '三个单元格区域的并集,即多个区域同时选中的效果 [B1:B10 A5:D5] '两个单元格区域的公共部分 [n] '被定义为名称n的单元格区域这种引用方式非常适合引用一个固定的Range对象。但是因为 不能在中括号中使用变量,所以这种引用方式缺少灵活性,不能借助变量更改要引用的单元格。 引用整行单元格 在VBA中,Rows表示工作表或某个区域中所有行组成的集合。 要引用工作表中指定的行,可以使用行号和索引号两种方式。 Activesheet.Rows("3:3").Select '选中活动工作表的第3行 ActiveSheet.Rows("3:5").Select '选中活动工作表的第3行到第5行参数是表示行的名称的字符串或字符串变量 如果使用索引号引用整行,代码为: ActiveSheet.Rows(3).Select '选中活动工作表中的第3行 '3是索引号,表示引用父对象(ActiveSheet)中的第3行如果要引用工作表中的所有行,代码为: Activesheet.Rows.Select '如果不给Rows属性设置参数,则表示引用集合中的所有行,效果等同于ActiveSheet.Cells。如果引用Range对象的Rows属性,则返回单元格区域中的指定行。 Rows("3:10").Rows("1:1").Select '选中第3行到第10行区域中的第1行引用整列单元格 可以使用Columns属性引用指定工作表或区域中的整列单元格,使用方法与使用Rows属性引用整行单元格的方法相似。 ActiveSheet.Columns("F:G").Select '选中活动工作表中的F到G列 ActiveSheet.Columns(6).Select '选中活动工作表中的第6列 ActiveSheet.Columns.Select '选中活动工作表中的所有列 Columns("B:G").Columns("B:B").Select '选中B:G列区域中的第2列 用Union方法合并多个单元格区域Application对象的Union方法返回参数指定的多个单元格区域的合并区域,使用该方法可以将多个Range对象组合在一起,进行批量操作。 Application.Union(Range("A1:A10"),Range("D1:D5")).Select '同时选中两个区域'用Range("A1:A10,D1:D5").Select 也Range对象的Offset属性 Range对象的Offset属性,作用类似于工作表的Offset函数。 使用Offset属性,可以获得相对于指定单元格区域一定偏移量位置上的单元格区域。 Range("A1").offset(4,0).Value=500 '在A1下方的第4个单元格中输入数值500 Offset(a,b) 表示向下a行,向右b列 Offset(-a,-b) 表示向上a行,向左b列'如果参数为0,则表示不偏移Range对象的Resize属性 使用Range对象的Resize属性可以将指定的单元格区域有目的地扩大或缩小,得到一个新的单元格区域。 Range("B2").Resize(5,4).Select '将B2扩展为一个5行4列的单元格区域 '此处的5,4 对于B2单元格本身而言属于Cells(1,1),要从B2单元格本身开始数起,为Range("B2:E6")区域。 Resize(行数,列数)注:Resize属性的参数用来确定返回区域的行数和列数,第1参数用于确定行数,第2参数用于确定列数,两个参数都应设置为正整数,若设置为负数则报错。 且都是以目前单元格区域为起始点,向下且向右不存在向上并向左的情况,注意该点。
如果Resize属性的参数小于其父对象包含的行列数,Resize属性将返回一个较小的单元格区域。 eg: Range("B2:E6").Resize(2,1).Select '将B2:E6单元格区域收缩为B2:B3单元格区域等同于: Range("B2:E6").Cells(1).Resize(2,1).Select 故总结:Resize属性不论参数的对象是单元格还是单元格区域都以左上角第一个单元格为起始点且以该点行列索引为1开始进行计数并进行相应向下及向右移动指定行列数。 Worksheet对象的UsedRange属性 Worksheet对象的UsedRange属性返回工作表中已经使用的单元格围成的矩形区域。 ActiveSheet.UsedRange.Select '选中活动工作表中已经使用的单元格区域。UsedRange属性返回的总是一个矩形区域,无论这些区域中间是否存在空行、空列或空单元格。 Range对象的CurrentRegion属性 Range对象的CurrentRegion属性,返回包含指定单元格在内的一个连续矩形区域。 Range("B5").CurrentRegion.Select注:空行及下面的区域,以及空列及右面的区域不包含在CurrentRegion属性返回的区域中。 Range对象的End属性 Range对象的End属性返回包含指定单元格的区域最尾端的单元格,返回结果等同于在单元格中按【End+方向键】组合键得到的单元格。 MsgBox Range("C5").End(xlUp).Address注: 1、指定单元格+End方向键 若此单元格置身于有值区域内则先会自动定位于指定方向的有值单元格区域的尾端,若对于此处尾端的单元格再次使用End方向键,则会定位到指定方向的最后一个单元格的位置; 2、若此单元格置身于无值单元格区域内则自动定位于位于指定方向的最后一个单元格的位置。
End属性的参数一共有4个可选项。分别用于指定要返回的是上、下、左、右哪个方向最尾端的单元格。 可设置的参数 参数说明 xlToLeft 等同于在单元格中按【End+左方向键】 xlToRight 等同于在单元格中按【End+右方向键】 xlUp 等同于在单元格中按【End+上方向键】 xlDown 等同于在单元格中按【End+下方向键】 单元格中的内容:Value属性 Range("A1:B2").Value="abc" Value是Range对象的默认属性,在给区域赋值时,可以省略属性名称。 Range("A1:B2")="abc"但为了保证程序运行过程中不出意外,建议保留Value属性。 访问Count属性,获得区域中包含的单元格个数 MsgBox Range("B4:F10").Count 如果想知道某个区域包含的行数或列数,可以用代码: MsgBox ActiveSheet.UsedRange.Rows.Count '活动工作表中已使用区域包含的行数 MsgBox ActiveSheet.UsedRange.Columns.Count '活动工作表中已使用区域包含的列数通过Address属性获得单元格的地址 MsgBox "当前选中的单元格地址为:" & Selection.Address 'Selection是对活动工作表中当前选中的对象的引用。 这个地址为 绝对引用地址,eg:$c$3:$F$6。 用Activate 与Select方法选中单元格 ActiveSheet.Range("A1:F5").Activate '选中活动工作表中的A1:F5 ActiveSheet.Range("A1:F5").Select '选中活动工作表中的A1:F5 这两行代码是等效的。但这两种方法并不完全相同。 Sub a() Range("A1:F5").Activate Range("B5").Activate End Sub 'Activate能同时选中 Sub b() Range("A1:F5").Select Range("B5").Select End Sub '只选中B5,Select只选中其中一个而且是后者选择清除单元格中的信息 一个单元格中不仅有数据,还有格式、批注、超链接等。 不同的内容,可以通过执行【功能区】中相应的命令来清除它们。 Range("B2").clear '清除B2单元格中的所有信息(包括批注、内容、格式、超链接等。) Range("B2").ClearComments '清除B2单元格中的批注 Range("B2").ClearContents '清除B2单元格的内容 Range("B2").ClearFormats '清除B2单元格的格式 Range("B2").ClearHyperlinks '清除B2单元格的超链接用Copy方法复制单元格区域 Sub 复制() Range("A1").Select Selection.Copy Range("C1").Select ActiveSheet.Paste '先选中再粘贴 End Sub
在使用VBA代码复制单元格时,并不需要选中单元格,所以如果要将A1单元格复制到C1单元格,用下面的代码就可以了: Range("A1").Copy Range("C1") 'A1 源单元格 Copy方法名称,执行复制操作 C1目标单元格 这是Copy方法的参数(省略了参数名),用来指定目标单元格。未省略参数名称的的语句应为: Range("A1").Copy Destination:=Range("C1")总结: 源单元格区域.Copy Destination:=目标单元格 '参数名称Destination可以省略有一点需要说明,无论复制的区域包含多少个单元格,在设置目标区域时,都可以只指定一个单元格作为目标区域最左上角的单元格即可。 eg: Range("A1").CurrentRegion.Copy Destination:=Range("G1") 'G1就是目标区域最左上角的单元格 粘贴后,Excel会将源区域中包括数值、格式、公式等全部内容粘贴到目标区域。eg:数值化粘贴 Sub a() Worksheets("sheet9").Range("A16:A18").Copy Worksheets("sheet8").Range("A16:A18").Select Selection.PasteSpecial Paste:=xlPasteValues,operation:=xlNone,skipBlank:=False,Transpose:=False '数值化粘贴 '忽略空格 '转置 End Sub用Cut方法剪切单元格 使用Cut 方法可以将一个单元格区域剪切到另一个单元格区域。 剪切单元格和复制单元格,除方法名称不同外,其他基本相似,可以参照Copy方法来使用Cut方法。 Range("A1:E5").Cut Destinastion:=Range("G1") '把A1:E5剪切到G1:K5 Range("A1").Cut Range("G1") '把A1剪切到G1 Range("A6:E10").Cut Range("G6") '把 A6:E10剪切到G6:K10 用Delete方法删除指定的单元格如果想删除整行单元格,应将代码写为: Range("B3").EntireRow.Delete
删除单元格 Range("B5").delete Shift:=xltoleft 删除B5单元格,删除后右侧单元格左移 注:没有right,只有右侧左移。 Range("B5").delete Shift:=xltoup 删除B5单元格,删除后下方单元格上移 注:没有down,只有下方上移。 Range("B5").Entirerow.Delete 删除整行 Range("B5").EntireColumn.Delete 删除整列
|
CopyRight 2018-2019 实验室设备网 版权所有 |