VBA引用单元格
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单元格作为VBA入门的一个必需掌握的概念,单元格的引用有多种方式,现在根据自己的经验及参考相关的书本来整理涉及单元格引用的知识。
最近发现自己对单元格方面的知识并没有完全掌握,收到了罗版的VBA自学宝典,结合以前的那些相关资料,一边学习,一边把相关的知识点记录下来。
一、选取所有单元格。
1. Sub 选取全部单元格一()
2. Cells.Select
3. End Sub
复制公式或代码
注:cells是所有单元格的集合。
1. Sub 选取全部单元格二()
2. Rows.Select
3. End Sub
复制公式或代码
而Rows则是所有行的集合。
1. Sub 选取全部单元格三()
2. Columns.Select
3. End Sub
复制公式或代码
而columns则是所有列的集合。
无论是所有单元格的集合,还是所有行或列的集合选取,都是工作表中全选所有单元格的表示方式。
二、Range引用来选取单元格
1、Range引用单元格方式1:Range("单元格地址")
例如:Range("A1"):表示单元格A1,注意:单元格地址要加双引号
值得注意的是:双引号的输入必须是在半角状态下输入的,否则会出现错误。
"单元格地址"里面的单元格地址不区分相对引用和绝对引用的,无论你是使用Range("A1")、Range("$A1")、Range("$A$1")还是Range("A$1"),都是引用通一个单元格。
一般为了简化作用,直接用Range("A1")这种形式来表示引用单元格。
2、Range引用单元格方式2:Range("单元格区域")
在VBA数组中,经常遇到arr=Range("A1:D10")这种数组赋予方式,而里面出现了Range("单元格区域")的这种单元格区域引用。
从这个最常见的例子中,我们可以发现,"A1:D10"代表了一个单元格区域的引用,其中A1是该区域的左上角上面的单元格,而D10则是该区域右下角下面的单元格。
但大家可以从下面两个例子来发现:
1. Sub q1()
2. Range("A1:D10").Select
3. End Sub
4. Sub q2()
5. Range("D10:A1").Select
6. End Sub
复制公式或代码
这两个小例子得到的结果都是选取A1:D10这个单元格区域
值得大家注意的,以下的这些通过索引号作为参数的引用,都是比较陌生的。
比如以下这个小例子:
例子1:
1. Sub T1()
2. Range("B2:E6")(1).Select
3. End Sub
复制公式或代码
注释:该例子代表了选取B2:E6区域中的第一个单元格的,即选取B2
例子2:
1. Sub T2()
2. Range("B2:E6")(3).Select
3. End Sub
复制公式或代码
注:该例子代表选取B2:E6区域中的第三个单元格,即D2,而单元格的区域的读取一般是从左到右,然后再从上到下进行读取的,故该区域的前3个单元格分别是B2、C2、D2,而第3个单元格就是为D2 例子3:
1. Sub T3()
2. Range("B2:E6")(
3.5).Select
3. End Sub
复制公式或代码
注意:当里面的索引号为小数时,excel会对其进行四舍五入,比如例子3中的3.5,excel会把它转换为4,故例子3 中的代表是B2:E6区域的第4个单元格选取,即选取E2
例子4:
1. Sub T4()
2. Range("B2:E6")(
3.2).Select
3. End Sub
复制公式或代码
而例子4中,因为四舍五入的关系,得到的结果是选取该区域的第3个单元格,即选取D2
例子5:
1. Sub F1()
2. Range("B2:E6")(1, 4).Select
3. End Sub
复制公式或代码
注:在例子5中,Range("单元格区域")(行号,列号),所代表的是选取该单元格区域中第几行与第几列交叉的那个单元格,而例子5中代表是选取B2:E6区域中的第1行第4列的单元格,在该区域中,所符合条件的单元格为E2。
值得关注的是,(行号,列号)里面的参数可以使用0或者负数。
当行号的参数为0的时候,则向该区域的左上角单元格向上偏移一个单位,当列号为0时候,则向该区域左上角单元格向左偏移一个单位;如果参数是负数的时候,在原来的基础上追加偏移量。
具体请看例子6、7:
1. Sub F1()
2. Range("B2:E6")(0, 0).Select
3. End Sub
复制公式或代码
例子6中是选取了A1单元格,即B2:E6区域左上角单元格B2分别向上偏移一行,向左偏移一列,所得到的单元格为A1
例子7:
1. Sub F1()
2. Range("C3:E6")(-1, -1).Select
3. End Sub
复制公式或代码
例子7中代表了C3:E6区域的左上角单元格C3分别向上偏移两行,向左偏移两列,所得到的单元格为A1
3、Range("列标" & 行数)的单元格引用方式:
例子7:
1. Sub Y()
2. Range("B" & 10).Select
3. End Sub
复制公式或代码
从这个最简单的例子,一个最常见的单元格引用方式。注意:列标需要加上双引号,并且要用到"&"把列标和行号连接起来。
经常用到的一个例子:往A1:A100里面分别填充1到100等这100个数字
1. Sub a()
2. Dim i As Integer
3. For i = 1 To 100
4. Range("A" & i) = i
5. Next i
6. End Sub
复制公式或代码
从中可以看到这种单元格方式引用的作用。
4、Range("定义名称")的单元格引用:
首先在excel2007中,公式→定义名称→把"A1:A100"区域定义为"数字"。
便可以使用这种方式,具体请看以下例子:
1. Sub B()
2. Range("数字").Select
3. End Sub
复制公式或代码
注:A1:A100这个区域已经定义名称为"数字",该代码表示选取A1:A100单元格区域
注意:定义名称也必须添加双引号,并且是半角下输入的。
5、Range方式引用多个区域:
前面详细说了:Range("A1:B10")这样类似的区域引用方式,但值得注意的是,那只是连续区域的引用。
还有一些不连续的区域,则需要在区域中间加,号
比如以下例子:
1. Sub 多区域引用()