1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Excel-VBA 快速上手(七 获取单元格对象)

Excel-VBA 快速上手(七 获取单元格对象)

时间:2020-02-07 01:45:59

相关推荐

Excel-VBA 快速上手(七 获取单元格对象)

文章目录

一、单元格对象二、获取单元格对象和选中单元格2.1. 选中单个单元格2.2. 选中连续的单元格2.3. 选中多个不连续的单元格2.4. 选中行2.5. 选中列2.6. 选中已使用单元格间的连续区域2.7. 单元格附近的连续区域2.8. 多个单元格间的交集区域2.9. 定位单元格2.10. 指定列中最后一个有内容的单元格

一、单元格对象

单元格对象(Range)用来操作和控制工作表中的单元格,使用单元格对象可以设置单元格的格式、单元格的信

息,单元格的内容,选取单元格等,本文列举些常见的用法,最好动手试验一下,要记住灵活运用

二、获取单元格对象和选中单元格

2.1. 选中单个单元格

第一种方式,通过Range(列名 + 行号).Select选中单元格:

Public Sub main()Dim rng As RangeSet rng = Range("A1")rng.SelectEnd Sub

第二种方式,通过Cells(行号, 列名).Select选中单元格:

Public Sub main()Dim rng As RangeSet rng = Cells(1, "A")rng.SelectEnd Sub

2.2. 选中连续的单元格

1. 定位左上角和右下角,选中之间所有单元格

第一种方式,Range(左上角列名 + 左上角行号 : 右下角列名 + 右下角行号)

Public Sub main()Dim rng As Range'选中从A1到C10的所有单元格Set rng = Range("A1:C10")rng.SelectEnd Sub

第二种方式,Range(Cells(左上角行号,左上角列号), Cells(右下角行号,右下角列号))

Public Sub main()Dim rng As Range'选中从第一行第一列到第五行第六列的所有单元格Set rng = Range(Cells(1, 1), Cells(5, 6))rng.SelectEnd Sub

2. 以基准单元格位置为基础偏移选中

先找到一个用来做基准的单元格,再利用基准单元格对象的Offset(偏移行数, 偏移列数)函数来进行位置偏移

Public Sub main()Dim rng As RangeSet rng = Range("A1:B10")'最终会选中D3到E12的所有单元格rng.Offset(2, 3).SelectEnd Sub

3. 以基准单元格位置为基础指定选中的行数和列数

先找到一个用来做基准的单元格,再使用单元格对象的Resize(选中行数, 选中列数)

Public Sub main()Dim rng As RangeSet rng = Range("A1")'以A1单元格为基础,向右选中五行三列,最终会选中A1到C5的所有单元格rng.Resize(5, 3).SelectEnd Sub

2.3. 选中多个不连续的单元格

第一种方式:

Public Sub main()Dim rng As RangeSet rng = Range("A1,C1:F4,A7")rng.SelectEnd Sub

第二种方式:

Public Sub main()Dim rng As RangeSet rng = Union(Range("A1"), Range("C1:F5"), Range("A7"))rng.SelectEnd Sub

2.4. 选中行

1. 选中单行

选中单行:通过Rows(行号)来选中指定行

Public Sub main()Dim rng As RangeSet rng = Rows(1)rng.SelectEnd Sub

2. 选中连续行

Public Sub main()Dim rng As RangeSet rng = Rows("1:10")rng.SelectEnd Sub

3. 选中多个不连续的行

Public Sub main()Dim rng As RangeSet rng = Range("1:3,5:7")rng.SelectEnd Sub

4. 选中单元格所在的行

Public Sub main()Dim rng As RangeSet rng = Range("C4:C5").EntireRowrng.SelectEnd Sub

2.5. 选中列

1. 选中单列

Public Sub main()Dim rng As RangeSet rng = Columns(1)rng.SelectEnd Sub

2. 选中连续列

Public Sub main()Dim rng As RangeSet rng = Columns("A:D")rng.SelectEnd Sub

3. 选中多个不连续的列

Public Sub main()Dim rng As RangeSet rng = Range("A:B,D:E")rng.SelectEnd Sub

4. 选中单元格所在的列

Public Sub main()Dim rng As RangeSet rng = Range("B1:C6").EntireColumnrng.SelectEnd Sub

2.6. 选中已使用单元格间的连续区域

Public Sub main()Dim rng As RangeSet rng = Sheets(1).UsedRangerng.SelectEnd Sub

2.7. 单元格附近的连续区域

以基准单元格为中心点,在其上下、左右、左上、左下、右上、右下被使用的单元格都会被选中,然后以被选中的

单元格为基准,继续寻找每个选中单元格的上下、左右、左上、左下、右上、右下被使用的单元格,反复循环,直到

找不到被使用的单元格,最后以所选单元格的左上角和右下角为端点,将这一片区域全部选中

如上图,基准单元格为 C7,它附近被使用的单元格有 C6、C8、B7、D7,所以这四个单元格会被选中,又因为 B6

与 B7 相邻,D8 与 D7 相邻,所以 B6 和 D8 也会被选中,最后以 B6 和 D8 为端点,选中所有区域

上图的代码为:

Public Sub main()Dim rng As RangeSet rng = Range("C7").CurrentRegionrng.SelectEnd Sub

2.8. 多个单元格间的交集区域

Public Sub main()Dim rng As RangeSet rng = Application.Intersect(Columns("b:c"), Rows("3:5"))rng.SelectEnd Sub

2.9. 定位单元格

在工作表中,我们可以用Ctrl + G调出定位窗口,然后设置定位条件来查找并选中单元格,如下图:

在 vba 中也提供了同样的功能来查找单元格,并获取单元格对象,语法为:单元格对象.SpecialCells(Type, Value)

SpecialCells函数的参数其实就是为了对应上图中的选项,列举常用参数如下:

SpecialCells函数找不到匹配的单元格时会直接报错,如下图,所以实际使用时有必要考虑是否要使用On Error Resume Next来跳过错误,On Error Resume Next在其他系列文章里有介绍:

示例代码,定位 A1 到 A3 之间,设置了单元格格式为数字的单元格:

Public Sub main()On Error Resume NextDim rng As RangeSet rng = Range("A1:A3").SpecialCells(xlCellTypeFormulas, xlNumbers)rng.SelectOn Error GoTo 0End Sub

2.10. 指定列中最后一个有内容的单元格

Public Sub main()Dim rng As Range'找到E列最后一行有内容的单元格Set rng = Range("E65536").End(xlUp)rng.SelectEnd Sub

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。