Excel VBA 范围对象
⚡ 智能摘要
Excel VBA Range 对象代表工作表上的一个单元格或一组单元格。本页将介绍对象层次结构、Range 和 Cells 属性、选择和引用单元格、读取和写入值以及 Offset 属性。

VBA Range 是什么?
VBA 范围对象代表 Excel 工作表中的一个或多个单元格。它是 Excel VBA 中最重要的对象。通过使用 Excel VBA 范围对象,您可以参考,
- 单个细胞
- 一行或一列单元格
- 选择细胞
- 3D 范围
正如我们在之前的教程中讨论的那样,VBA 用于录制和运行…… 宏但是,VBA 如何确定工作表中需要处理哪些数据呢?这时 VBA Range 对象就派上用场了。
VBA 中引用对象的简介
引用 Excel 的 VBA 范围对象和对象限定符。
- 对象限定符:用于引用对象。它指定您引用的工作簿或工作表。
要操纵这些单元格值, 物业 和 方法 被使用。
- 属性: 属性存储有关对象的信息。
- 方法: 方法是对象将要执行的操作。Range 对象可以执行诸如选择、复制、清除、排序等操作。
VBA 遵循对象层次结构模式来引用 Excel 中的对象。您必须遵循以下结构。请记住,这里的点号 (.dot) 用于连接不同层级的对象。
应用程序.工作簿.工作表.范围
可以通过两种不同的属性访问该层次结构,其中 Range 属性是最常用的属性。
如何使用 Range 属性引用 Excel VBA Range 对象
Range 属性可应用于两种不同类型的对象。
- 工作表对象
- 范围对象
Range 属性的语法
- 关键字“范围”。
- 关键字后的括号
- 相关小区范围
- 引述 (” ”)
Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1")
当您引用 Range 对象时,如上所示,它被称为 完全合格的参考您已经明确告诉 Excel 您想要哪个区域、哪个工作表以及在哪个工作表中。
例如:消息Box 工作表(“Sheet1”).区域(“A1”).值
使用 Range 属性,您可以执行许多任务,例如,
- 使用范围属性引用单个单元格
- 使用 Worksheet.Range 属性引用单个单元格
- 引用整行或整列
- 使用 Worksheet.Range 属性引用合并单元格等
因此,如果要涵盖范围属性的所有场景,篇幅将太长。对于上述场景,我们将仅针对其中一种场景演示一个示例。请参阅使用范围属性的单个单元格。
使用 Worksheet.Range 属性引用单个单元格
要引用某个单元格,请将其地址作为文本字符串传递给 Range 属性。
语法很简单 “范围(“单元格”)”。
在这里,我们将使用“Select”命令从工作表中选择单个单元格。
步骤1) 在此步骤中,打开 Excel。
步骤2) 在此步骤中,
- 点击
按钮。
- 它将打开一个窗口。
- 在此处输入您的程序名称,然后单击“确定”按钮。
- 它将带您进入主 Excel 文件,从顶部菜单中单击“停止”记录按钮以停止记录宏。
步骤3) 下一步,
- 单击宏按钮
从顶部菜单中。它将打开下面的窗口。
- 在此窗口中,单击“编辑”按钮。
步骤4) 上述步骤将打开名为“Single Cell Range”的文件的VBA代码编辑器。输入如下所示的代码,以从Excel工作表中选择单元格区域“A1”。
Sub SingleCellRange() Range("A1").Select End Sub
步骤5) 现在保存文件 并运行程序,如下所示。
步骤6) 执行程序后,您将看到单元格“A1”被选中。
同样,您可以选择具有特定名称的单元格。例如,如果您想搜索名称为“Guru99- VBA 教程”。您需要运行如下所示的命令。它将选中具有该名称的单元格。
范围(”Guru99- VBA 教程”。选择
要应用其他范围对象,这里是代码示例。
| Excel 中选择单元格的范围 | 声明范围 |
|---|---|
| 单排 | 范围(“1:1”) |
| 对于单列 | 范围(“A:A”) |
| 对于连续单元格 | 范围(“A1:C5”) |
| 对于非连续单元格 | 范围(“A1:C5,F1:F5”) |
| 对于两个范围的交集 | 范围(“A1:C5 F1:F5”) (对于交叉单元格,请记住没有逗号运算符) |
| 合并单元格 | 范围(“A1:C5”) (要合并单元格,请使用“合并”命令) |
选择单元格只是第一步。实际上,宏会读取单元格中的内容,并将新值写回单元格。
如何使用 Range 对象读取和写入值
几乎所有操作工作表的宏都会执行以下两项操作之一:从单元格读取值或向单元格写入值。这两种操作都通过 Value 属性进行,而且都不需要事先选中单元格。
Sub ReadAndWrite() Dim Price As Double Dim Qty As Long ' Read two values out of the sheet Price = Range("B1").Value Qty = Range("B2").Value ' Write the calculated result back Range("B3").Value = Price * Qty ' Fill a whole block in one statement Range("D1:D10").Value = "Guru99" ' Clear only the contents, keeping the formatting Range("F1:F10").ClearContents End Sub
四个要点使这种模式可靠。
- 无需选择: 撰稿 Range(“B3”).Value = 10 比先选中单元格更快更安全。录制的宏中充斥着 `.Select`,是因为录制器会镜像鼠标操作,而不是因为代码本身需要这样做。
- 价值与文本: .Value 返回底层数据,而 .Text 返回屏幕上显示的格式化字符串,该字符串可能会因列宽而截断。在计算中读取 .Value。
- 一行显示所有方块: 将值分配给多单元格范围会一次性填充所有单元格,这比逐个填充要快得多。ping.
- 弄清楚正确的事情: ClearContents 只删除数值,Clear 同时删除格式,Delete 删除单元格并移动周围的单元格。
Range 属性通过字母和数字来寻址单元格。第二个属性则通过两个数字来寻址同一个单元格。
单元格属性
与范围类似,在 VBA 您还可以使用“单元格属性”。唯一的区别在于它有一个“item”属性,可用于引用电子表格中的单元格。“单元格属性”在编程循环中非常有用。
例如,
Cells.item(行, 列)。以下两行均指单元格 A1。
- Cells.item(1,1) 或
- 单元格.项目(1,“A”)
VBA 中 Range 和 Cells 的区别
Range 和 Cells 通过不同的路径到达同一个工作表单元格,正确选择可以使代码更短、更易于阅读。
| 不同点 | 范围 | 电池 |
|---|---|---|
| 地址格式 | 文本字符串,Range(“A1”) | 两个数字,单元格(1, 1) |
| 多个细胞 | 是的,范围(“A1:C5”) | 一次一个细胞 |
| 在循环内部 | 需要字符串拼接 | 行号可以是循环计数器 |
| 可读性 | 与 Excel 中看到的地址一致。 | 第27列比AA更难想象。 |
| 组合使用 | Range(Cells(1, 1), Cells(5, 3)) 从数字构建 A1:C5 单元格区域。 | |
实际操作中,对于可以一目了然的固定地址,应该使用 Range;而对于在运行时计算行号或列号的情况,应该使用 Cells。
范围偏移属性
范围偏移属性将选择远离其原始位置的行/列。根据声明的范围,选择单元格。参见下面的示例。
例如,
Range("A1").Offset(RowOffset:=1, ColumnOffset:=1).Select
操作结果将显示在单元格 B2 上。偏移属性会将单元格 A1 向后移动 1 列 1 行。您可以根据需要更改 RowOffset 和 ColumnOffset 的值。您可以使用负值 (-1) 将单元格向后移动。
下载包含上述代码的 Excel






