VBA笔记:Range对象

1.单元格

1.1 单个单元格

Worksheets("Sheet1").Range("A1").Value = 10

1.2 单元格区域
直接引用与通过变量引用
Sub rng()
    Range("A1:A10").Value = 10  '在A1:A10插入数值10
    Dim n As String
    n = "B1:B10"
    Range(n) = 100  '在B1:B10插入数值100
End Sub
通过名称引用
Sub rng()
    Range("date").Value = 10  '提前定义名称 date = A1:B10
End Sub
1.3 跨区域引用

同时选择多个区域

Sub rng()
    Range("A1:A10,A4:E6,C3:D9").Select  '逗号分隔
End Sub

选择多个区域的交集

Sub rng()
    Range("A1:A10 A4:E6").Select  '空格分隔
End Sub

包含2个区域的最小矩形区域

Sub rng()
    Range("A1:A10","B4:E6").Select  '效果与"A1:E10"一样
End Sub

2.Cells属性

作为Range的属性

Range("B3:F9").Cells(2,3) = 100 '为B3:F9区域第2行、第3列的单元格赋值100

作为Range的参数

Range(Cells(1,1),Cells(10,5)).Select '2个表达式,意义是一样的
Range("A1","E10").Select

3.Rows、Columns对象

与Range对象有点不同,Rows和Columns是直接引用工作表、区域的指定行、列
Rows("3:10").Rows(1).Select '选中第3行到第10行区域中的第1行
Columns("B:G").Columns(3).Select '选中第3行到第10行区域中的第1行

4.Union方法

将多个单元格区域粘在一起,并同时对其进行操作

案例:选中A1:F14区域中,所有数值与A1相同的单元格
Sub Rnge5()
    Dim myRng As Range, n As Range
    Set myRng = Range("A1")
    For Each n In Range("A1:E14")
        If n.Value = Range("A1").Value Then
            Set myRng = Union(myRng, n)
        End If
    Next
    myRng.Select
End Sub

5.Offset属性

与同名Excel函数的原理一样
Range("A1").offset(2,3).Value = 100 '往下走2行、往右走3列

6.Resize属性

以目标单元格区域为对象,将范围扩大或缩小到指定范围
Range("A1").Resize(5,4).Select '放大到 5行x4列
Range("B1:H10").Resize(2,1).Select '缩小到 2x1

7.UsedRange属性

返回包含所有已使用单元格的矩形区域
比如,表里就A1和C10有数据,那么返回数据为 A1:C10

8.End属性

作用相当于在Excel里使用 Ctrl+方向键,需要配合"方向"参数使用

语句格式

Range("C5").End(xlUp).Select

参数说明
参数 说明
xlToLeft 向左移动
xlToRight 向右移动
xlUp 向上移动
xlDown 向下移动
案例:在数列的最后一格后边插入1个1~100的随机整数
Sub Rnge6()
    Range("A65536").End(xlUp).Offset(1, 0).Value = Int(Rnd() * 100)
End Sub

9.Value属性

Value 是Range的默认属性,在赋值时,可以被省略
Range("B1:H10").Value = 100 '两者的意义是一样的
Range("B1") = 100

10.Count属性

Count可以计算区域里一共包含多少单元格
Range("B1:H10").Count
加上Rows和Columns,可以看纵、横的格数
Range("B1:H10").Rows.Count
Range("B1:H10").Columns.Count

11.复制粘贴

复制B1的数据,并粘贴到C1
Range("B1").Copy Range("C1")
跨工作表粘贴
Worksheets("Sheet1").Range("B1:B10").Copy Worksheets("Sheet2").Range("C1:C10")

你可能感兴趣的:(VBA笔记:Range对象)