-
Excel 2010 VBA 入门 025 单元格区域
2021-03-31 15:10:43以地址表示矩形单元格区域对象 以对角单元格表示矩形单元格区域对象 不规则单元格区域的表示 使用Union方法获取合并区域 使用Intersect方法获取多个区域的交集 以地址表示矩形单元格区域对象 在Excel中,如要...目录
以地址表示矩形单元格区域对象
在Excel中,如要以地址表示某个矩形的单元格区域,则需要运用冒号(:)运算符,在其两侧分别写入该矩形区域对角的两个单元格地址,即最左上角的单元格地址和最右下角的单元格地址,或者最左下角的单元格地址和最右上角的单元格地址。如图所示,若要表示该区域,则可以选用地址1和地址3,或者地址2和地址4。
一旦选定了某组地址,就可将两个地址任意放置于冒号(:)的两侧,而无须分先后。比如“地址1:地址3”、“地址3:地址1”、“地址4:地址2”、 “地址2:地址4”是等价的。
在VBA中,使用Range对象可以表示单元格区域,其用法与单个的单元格相同,Address参数只需采用以上区域表示方式即可。因而本例中,需要表示A1:BIO单元格区域,以下四个表达式是等价的。Range ( "A1: B10 " ) Range ( "A10 : B1 " ) Range ( "B10 : A1 " ) Range ( "B1 : A10 " )
一般情况下,若无特殊需求,总是以“最左上角单元格地址:最右下角单元格地址”的形式表示某个矩形单元格区域。
以对角单元格表示矩形单元格区域对象
在ExceIVBA中,只需指定矩形单元格区域的对角单元格,就可以直接用Range对象表示该单元格区域,其语法为
Range(Addressl,Address2)
如A1:B10可以采用以下表达式中的任何一个:
Range ( "A1" ,"B10" ) Range ( "A10" ,"B1" ) Range ( "B10" ,"A1" ) Range ( "B1" , "A10" )
该方式表示单元格区域时,也可以用单元格对象替代其地址,即Range(Cell1,Ce112)
其中,参数Cell1和Ce112表示单元格区域的对角单元格对象,即Range对象或者Cell对象。Celll和Ce112可以为图2-4所示的对角单元格中的任何一组。如本例表示A1:B10,若以单元格A1和B10作为对角单元格为例,可以采用以下任何一个表达式,开发者可根据实际需求任选其一:Range (Range ( "A1 " ) , Range (¨B10 " )) Range (Range ( "B10 ") , Range ( " A1 ")) Range ( Cells (1, "A") , Range (¨ B10 ")) Range ( Cells (10 , "B" ) , Range (¨A1 ")) Range ( Cells (1, "A") , Cells (10, " B" )) Range ( Cells (10 ,¨B¨ ) , Cells ( 1, "A" )) Range (Range ( "A1" ) , Cells (10 , "B ")) Range (Range ( "B10 ") , Cells (1,¨A"))
不规则单元格区域的表示
任何不规则单元格区域可以表示为若干个矩形单元格区域或单元格的并集。当需要表示此类单元格区域对象时,可以采用以下方式表示:
Range ( "AreaAddre1,[AreaAddress2] [ , ...] [ AreaAddressN]")
其中,AreaAddress表示各个矩形单元格区域的地址。本例中需要同时选择A1:A10以及C1:D8区域,即两个矩形区域A1:A10和C1:D8,因而其单元格区域的对象表示为
Range( "A1 : A10 , C1 : D8 ")
使用Union方法获取合并区域
如图所示,当需要表示多个单元格区域的合并区域时(即整个区域1和区域2所包围的不规则区域),除了使用单元格地址表示方法外,还可以使用Union方法对多个区域进行并集运算。
Union方法的语法如下:
Union ( Rangel ,Range2 [ , ...] [ .Ran greN)
其中,RangeN为各个所需要求并集的单元格区域。在一个Union方法中,最少求并集的区域为2个,最多为30个。Union方法将会返回一个单元格区域的对象,可以将其赋值给Range对象变量或者直接作为对象进行使用。比如:
Set 合并区域=Union(区域1,区域2)
或者
Union(区域1,区域2).Select
比如需要同时选中A1:A10和C1:D8,也可以采用Union方法表示其单元格区域对象:
Union(Range("A1:A10¨),Range(¨C1:D8")).Select
当需要求多个单元格区域的并集时,此方法可以避免同时记录太多单元格地址而造成程序难以阅读。当需要求3个或3个以上的合并单元格区域时,通常采用以下方法:
Set合并区域=Union(区域1,区域2) Set合并区域=Union(合并区域,区域3)
使用Intersect方法获取多个区域的交集
所谓区域的交集,即两个或两个以上单元格区域的重叠部分,如图所示。
当需要获取两个区域的交集时,通常采用Intersect方法,其语法为
Intersect(Rangel,Rangre2 [ , ... ] [ . RangeN])
其中,RangeN为各个所需要求交集的单元格区域。同Union方法一样,在一个Intersect方法中,最少求交集的区域为2个,最多为30个。Intersect方法将会返回一个单元格区域的对象,可以将其赋值给Range对象变量或者直接作为对象进行使用。如:
Set 交集区域=Intersect(区域1,区域2)
或者
Intersect(区域1,区域2).Select
需要注意的是,当两个或多个区域不存在交集时(如图2-7所示),该方法将返回Nothing,此时将不代表任何单元格或单元格区域,无法对其进行对象操作。
-
Excel VBA:单元格对象
2020-06-18 15:08:38Cells(1,1)方式——表示A1单元格(cells属性返回单元格区域中指定行和列相交的单元格) Cells(1,“A”)方式——表示A1单元格Cells(2,1)方式——表示A2单元格 [A1]方式——表示A1单元格 注意:①列标不区分大小写 ②...多种方法引用单元格
Range(“A1”)方式——表示A1单元格
Cells(1,1)方式——表示A1单元格(cells属性返回单元格区域中指定行和列相交的单元格)
Cells(1,“A”)方式——表示A1单元格Cells(2,1)方式——表示A2单元格
[A1]方式——表示A1单元格注意:①列标不区分大小写 ②VBA中字符用加双引号"",数字和变量无需加双引号""。所以,Cells(1,“A”)方式很好理解了。
多种方法引用单元格区域
Range(“A1:B2”)方式——表示A1到B2的单元格区域,包括4个单元格
[A1:B2]方式——表示A1到B2的单元格区域,包括4个单元格
以下三种方式等同:
Range(Cells(1, 1), Cells(10, 5))
Range(“A1”, “E10”)
Range(Range(“A1”), Range(“E10”))
均表示工作表中A1:E10单元格区域优缺点讨论:Cells(1,1)缺点是形式不支持引用区域,不支持成员列表;[A1]形式不支持循环,不支持成员列表;Range(“A1”)形式支持循环,支持引用区域,支持自动列出属性,方法等成员。
引用整行或者整列
Range(3:3)——表示引用第三行
Range(2:5)——表示引用第二到第五行
Range(“D:D”)——表示引用D列(D不区分大小写)
Rows(3)——表示引用第三行
Rows(“3”)——表示引用第三行
Rows(“3:5”)——表示引用第三到第五行
Columns(3)——表示引用第三列
Columns(“C”)——表示引用第三列
Columns(“C:D”)——表示引用C到D列属性
offset
作用:返回Range对象,它代表位于指定单元格区域的一定的偏移量位置上的区域。
语法
Range.Offset(RowOffset, ColumnOffset)RowOffset:区域偏移的行数(正数、负数或 0(零))。正数表示向下偏移,负数表示向上偏移。默认值是 0。
ColumnOffset:区域偏移的列数(正数、负数或 0(零))。正数表示向右偏移,负数表示向左偏移。默认值是 0。Resize
语法
Range.Resize(RowSize, ColumnSize)RowSize:新区域中的行数。如果省略该参数,则该区域中的行数保持不变。
ColumnSize:新区域中的列数。如果省略该参数。则该区域中的列数保持不变。Range(“a1”).Resizt(3, 2).Select
End
作用:返回一个 Range 对象,该对象代表包含源区域的区域尾端的单元格。等同于按键 End+
↑、End+ ↓、End+ ←或 End+ →。
语法
Range.End(Direction)
Direction:所要移至的方向。(包括以下四种情况)
xlDown 向下
xlToLeft 向左
xlToRight 向右
xlUp 向上我们一般用end属性获取某列的最后一个非空单元格的行号
Cells(Rows.Count, “A”).End(xlUp).rowAddress
作用:返回单元格地址。
MsgBox Range(“a1”).Address
Value
作用:表示单元格里面的内容,默认属性,可省略常用方法
Select
相当于我们点住鼠标左键圈选一个单元格区域
Range(“a1:a10”).Selectcopy
复制内容到指定目的地的作用。
Range(“a1”).Copy Range(“b1”) ’ 将A1单元格内容复制到B1
Worksheets(1).Range(“a1”).Copy Worksheets(2).Range(“b1”)'将表1中A1单元格内容复制到表2单元格B1中Union
将多个非连续区域连接起来成为一个区域,从而可以实现对多个非连续区域一起进行操作。
Union(Worksheets(1).Range(“A1:D4”), Worksheets(1).Range(“E5:H8”)).Select
union方法一般结合find方法,在依次找到特定的单元格区域之后,联合选择然后做统一的操作。Clear
清除单元格的内容
Sub test()
Range(“a:a”).Clear '清除A列单元格,包括数据内容和格式
Range(“a:a”).ClearContents '如果不想清楚单元格颜色等格式,只清除A列单元格内容用ClearContentsRange(“a:a”).ClearComments '清除批注
Range(“a:a”).ClearFormats’清除格式
End SubSpecialCells
在Excel中使用定位对话框可以选中工作表中特定的单元格区域,而在VBA中则使用SpecialCells方法。下面这个例子实现选中含有公式的单元格。Sub test()
Dim rng As Range
Set rng = Sheet1.Range(“a1:x100”).SpecialCells(xlCellTypeFormulas)'选中A1:X100单元格区域中包含公式的单元格
rng.Select
End Sub
除了可以选中包含公式的单元格,我们还可以选中含有注释的单元格区域、含有相同格式的单元格区域等等。上述代码中xlCellTypeFormulas替换为下表中值即可
我们如果要仅复制筛选后的数据,就可以用
SpecialCells(xlCellTypeVisible).copy如果判断A1:B10单元格区域若存在空格,则隐藏所在行[A1:B10].SpecialCells(xlCellTypeBlanks).Rows.Hidden =True
整理空行工具
Sub s()
row1 = InputBox(“请输入需要整理空行的列(英文)”, “提示信息”)
Range(row1 & “:” & row1).SpecialCells(xlCellTypeBlanks).Rows.Hidden = True
End Sub -
Excel VBA 中单元格选取
2017-05-14 00:34:24Option Explicit '1 表示一个单元格(a1) Sub s() Range("a1").Select Cells(1, 1).Select Range("A" & 1).Select Cells(1, "A").Select Cells(1).Select ...'2 表示相邻单元格区域 Sub d() 'Option Explicit '1 表示一个单元格(a1) Sub s() Range("a1").Select Cells(1, 1).Select Range("A" & 1).Select Cells(1, "A").Select Cells(1).Select [a1].Select End Sub '2 表示相邻单元格区域 Sub d() '选取单元格a1:c5 ' Range("a1:c5").Select ' Range("A1", "C5").Select ' Range(Cells(1, 1), Cells(5, 3)).Select 'Range("a1:a10").Offset(0, 1).Select Range("a1").Resize(5, 3).Select End Sub '3 表示不相邻的单元格区域 Sub d1() Range("a1,c1:f4,a7").Select 'Union(Range("a1"), Range("c1:f4"), Range("a7")).Select End Sub Sub dd() 'union示例 Dim rg As Range, x As Integer For x = 2 To 10 Step 2 If x = 2 Then Set rg = Cells(x, 1) Set rg = Union(rg, Cells(x, 1)) Next x rg.Select End Sub '4 表示行 Sub h() 'EntireRow属性 'Rows(1).Select 'Rows("3:7").Select 'Range("1:2,4:5").Select Range("c4:f5").EntireRow.Select End Sub '5 表示列 Sub L() 'EntireColumn 属性 ' Columns(1).Select ' Columns("A:B").Select ' Range("A:B,D:E").Select Range("c4:f5").EntireColumn.Select '选取c4:f5所在的行 End Sub '6 表示正在选取的单元格区域 Sub d2() Selection.Value = 100 End Sub
例子:选取当前工作表中含有>12的数字所在的行:
方法一:定位
“定位”可以在所选区域中定位大于12的数字所在的单元格,若需要删除这些单元格所在的行,定位后右键——删除整行即可(具体步骤此文不做详述)方法二:如下代码:
Public Sub 选取整行() Dim myrange As Range Dim currentRange As Range Set myrange = Range("a1") Dim myrow As Integer, mycol As Integer myrow = ActiveSheet.UsedRange.Rows.Count mycol = ActiveSheet.UsedRange.Columns.Count For i = 1 To myrow For j = 1 To mycol If IsNumeric(Cells(i, j)) And Cells(i, j).Value > 12 Then Set currentRange = Cells(i, j).EntireRow Set myrange = Union(myrange, currentRange) End If Next j Next i myrange.Select End Sub
-
Excel:VBA操作单元格对象
2020-06-20 23:46:58Range(“a1:a10”).Select '表示选中单元格A1:A10的区域 Range(“a2”).Value = 1 '表示给单元格赋值为1,Range的默认属性就是Value Range(“a1”).Offset(2, 3).Select '以单元格a1为基准,下移2行,右移3列,...主要内容:
- 单元格和他的朋友们
- 单元格对象常用操作
Cells(2, 3).Select '单元格第二行第3列
Range(“a1:a10”).Select '表示选中单元格A1:A10的区域
Range(“a2”).Value = 1 '表示给单元格赋值为1,Range的默认属性就是Value
Range(“a1”).Offset(2, 3).Select '以单元格a1为基准,下移2行,右移3列,单元格偏移
Range(“a1”).End '单元格所在区域的边界
Sheet1.Range(“a65536”).End (xlUp).Row '表示到单元格a65536的上边界,还有左边界xlLeft,右边界xlRight,下边界xlDown。表中有数据的一共有多少行,返回表中最后一行的行号
Range(“a10”).EntireRow.Select '重新选区域,选a10所在的整行
Range(“a10”).Resize(1, 4).Select '表示选中多个区域,以单元格a10为基准,向下一行,向右4列,选中这个区域
Range(“H7:L7”).Copy Range(“N7”) '选择区域H7:L7,复制,Copy后空格,填写要复制到哪个位置
Range(“a1:a3”).Merge 'merge表示合并选中的单元格区域
MsgBox “弹出一个输出确定框”
InputBox “你几岁了?弹出一个输入框”
i = InputBox(“你几岁了?”) '把输入的值赋值给变量iRange(“a1”) = i '表A1单元格就会被赋值
-
VBA中引用单元格与区域
2018-01-29 22:14:51在Visual Basic中,Range对象既可表示单个单元格,也可表示单元格区域。 引用 含义 Range("A1") 单元格A1 Range("A1:B5") 从单元格A1到单元格B5的区域 Range("C5:D9,G9:H16") 多块选定区域 Range... -
excel vba单元格邻近操作
2020-10-26 09:36:15vba基础单元格 选取1 表示一个单元格(a1)2 表示选相邻单元格区域3 表示不相邻的单元格区域,4 表示行5 表示列6 重置坐标下的单元格表示方法7 表示正在选取的单元格区域练习 单元格 选取 1 表示一个单元格(a1) Sub s... -
VBA - Excel编程概念之:【单元格和区域】一、如何引用单元格和区域
2007-06-16 12:06:00使用 Visual Basic 的普通任务是指定单元格或单元格...在 Visual Basic 中,Range 对象既可表示单个单元格,也可表示单元格区域。下列主题说明了标识和处理 Range 对象最常用的方法。用 A1 样式记号引用单元格和单元格 -
tstringgrid 单元格区域获取_零基础学Excel VBA-WE002 【VBA获取最大行列号,让代码更智能】...
2020-12-14 19:13:34[] / Range / Cells代表一个单元格或单元格区域,这是非常基本、用法也非常多的对象。我们看一个汇总说明。对固定单元格和固定范围的表示,用 [] 是最简单也最直观的,用 Range 也还可以,只是书写起来稍为啰嗦,而... -
将datatable指定单元格设置为空_如何用VBA代码合并单元格,Excel技巧一看就会
2020-12-14 04:30:51NO.1Excel合并单元格操作,相对简单,快捷工具栏里有按钮可以方便执行。...语法Range.Merge(Across)Range是一个单元格区域对象变量。也可以这样来表示:Range("A1:F10").Merge此例表示将A1到F1单... -
vba 获取当前sheet总行数_获取单元格区域的总行数和起始行数,这个干活一定要掌握...
2020-12-11 13:17:29VBA早间档VBA早间档,利用简单的几分钟,学习一些简单的VBA知识,提升工作效率今日主题昨天我们分享了VBA中对于行列的一些简单操作,今天我们来继续深入学习,在我19点档的案例分享的代码中,经常会碰到一些表示行列... -
删除单元格_vba代码快速定位删除空白单元格,效率快的不只是一点点
2021-01-12 01:37:08今天我们内容主要通过讲解'Range.EntireRow(返回行),Range.EntireColumn(返回列)两个属性,定位单元格具体位置,并根据位置删除所在区域。▼Range.EntireRow属性▼1、Range.EntireRow 属性:返回一个 Range 对象,... -
判断数组交集_VBA学习笔记23:数组与单元格格式
2021-01-14 14:56:46数组除了数字类型外,当然没有颜色、字体等格式,但是别忘了range对象可以表示多个连续或不连续的单元格区域。 利用上述特点,我们就是要数组构造单元格地址串,然后批量对单元格进行格式设置。 注意,range单元格... -
Excwl VBA:整行和整列区域
2020-01-02 19:47:04返回一个 Range 对象,该对象表示包含指定区域的整行(或多行)。只读。 语法 表达式.EntireRow 表达式一个代表 Range 对象的变量。 示例 本示例对包含活动单元格的行中的第一个单元格赋值。本示例必须在工作表... -
c++判断是否数组_如何判断单元格内是否包含公式和数组,教你一个VBA编程方法...
2021-01-29 03:28:14No.1本节内容有两个重点,一个是数组,一个是公式。...这个方法有一个快捷方式,即选定一个单元格区域,在“编辑栏”里输入“=”+数据或“=”+公式。按Shift+Ctrl+Enter组合键。此时,查看编辑栏里的值会多出一个{... -
VBA编程基础
2007-12-26 11:19:00VBA - Excel编程概念之:【单元格和区域】一、如何引用单元格和区域 使用 Visual Basic 的普通任务是指定单元格或单元格...在 Visual Basic 中,Range 对象既可表示单个单元格,也可表示单元格区域。下列主题说明了标 -
vba mysql select_VBA学习笔记70: Select语句基础
2021-01-19 19:39:05学习资源:《Excel VBA从入门到进阶》第72集 by兰色幻想这节课...Select * from [sheet1$]如果是对表中特定单元格区域进行查找,可以在[sheet1$]的$后面加单元格区域。在开讲之前,先在类模块写好打开数据库、复制筛... -
数组批量设置单元格格式
2021-02-26 17:36:40数组除了数字类型外,当然没有颜色、字体等格式,但range对象可以表示多个连续或不连续的区域,我们就可以用数组构造单元格地址串,然后批量对单元格进行格式设置。 需要注意的是,Range里单元格地址串不能大于255... -
Excel VBA:Range对象
2020-01-13 15:28:501.表示连续区域 Range("A1")表示单个单元格A1,同...Range(cells(i,j),cells(m,n))表示第i行第j列的单元格到第m行n列的单元格区域,有时cells前需加worksheets("sheet1").之类; 2.表示不连续区域 Range("A1:B2... -
Excel 2010 VBA 入门 032 将列进行分组
2021-04-07 14:44:50Columns对象和Rows对象分别表示整列单元格和整行单元格,是一种特殊的单元格区域对象。当这两个对象没有任何指定地址时,分别表示整个工作表的所有列和所有行。 单列和单行的表示 当需要表示单列.. -
VBA常用代码与技巧解析
2018-08-11 19:17:01行、一列、包含一个或者更多单元格区域(可以是连续的单元格,也可以是不连续的单元格) 中选定的单元格,甚至是多个工作表上的一组单元格,在操作 Excel 内的任何区域之前都 需要将其表示为一个 Range 对象,然后... -
EXCEL VBA笔记
2018-05-08 19:04:51Range(“A1”).Select ‘选取单元格,Range表示区域 ActiveCell.FormulateR1C1=”1” ‘对选中的单元格赋值(R1C1相对位置赋值,此处赋值 ’按文本格式)ActiveCell 表示当前单元格 Cells(2,4)=3‘对D2赋值,此处... -
EXCEL VBA-RANGE对象
2020-03-28 10:17:35RANGE对象表示为单元格或单元区域(区别cells对象,仅表示某单元格),表示方法有如下几种: Range("C3: B109").Select '区域选中' Range("B109").Select 'B109单元格选中' Range(Cells(i, 2), Cells(i, 3)).... -
他山之石——VBA数组的使用-Part4(VBA Array)
2018-06-24 02:32:30学到这个程度,已经具有一定程度的实用性了。事实上,单元格设置背景颜色在实际... '数组除了数字类型外,当然没有颜色、字体等格式,但是别忘了range对象可以表示多个连续或不连续的单元格区域 '利用上述特点,我... -
select * from where 三个条件_VBA学习笔记70: Select语句基础
2021-01-25 03:47:39学习资源:《Excel VBA从入门到进阶》第72集 by兰色幻想这节课来详细讲解...Select * from [sheet1$]如果是对表中特定单元格区域进行查找,可以在[sheet1$]的$后面加单元格区域。在开讲之前,先在类模块写好打开... -
VBA生成和为定值的随机数
2020-12-27 19:12:32Range(“A1:D1”)是对单元格A1:D4的引用(也可以用[A1:D4]代替),可以表示值range().value,也可以表示单元格的宽和高等属性 我们加入循环语句,条件为A1:D4的和是否等于E1 Do Until Application.Sum(Ran -
学习VBA的记录
2016-11-22 21:19:201、cell和range的区别:cell代表一个单元格,如:cells(1,1)只能表示A1;Range可以表示一个单元格(range("A1"),也可以表示一个区域(range("A1:A10") 2、 -
VBA入门到进阶常用知识代码总结24
2020-02-16 23:40:25数组除了数字类型外,当然没有颜色、字体等格式,但是别忘了range对象可以表示多个连续或不连续的单元格区域。 利用上述特点,我们就是要数组构造单元格地址串,然后批量对单元格进行格式设置。 注意,单元格地址串... -
中文版Excel.2007高级VBA编程宝典 1/2
2012-04-06 16:00:1611.1.13 确定单元格区域是否包含在另一个单元格区域内 11.1.14 确定单元格的数据类型 11.1.15 读写单元格区域 11.1.16 在单元格区域中插入值的更好方法 11.1.17 传递一维数组中的内容 11.1.18 将单元格... -
VBA之UsedRange属性
2019-09-26 00:37:002 '返回一个 Range 对象,该对象表示指定工作表上所使用的区域 3 4 5 Sub 已使用区域() '选中工作表里“占用”的的区域 6 Sheet2.UsedRange.Select 7 End Sub 8 9 10 '注意: 11 '已使用区域的...