如何在vba中使用范围和单元格?
VBA 中的范围和单元格简介
当您环顾 Excel 工作簿时,您会发现所有内容都围绕单元格进行。单元格和单元格区域是您存储数据的地方,然后一切就开始了。
为了充分利用 VBA,您需要学习如何在代码中使用单元格和范围。为此,您需要对 Range 对象有深入的了解。使用它,您可以通过以下方式引用代码中的单元格:
- 单个细胞。
- 一系列细胞
- 一行或一列
- 三维范围
RANGE OBJECT 是 Excel 对象层次结构的一部分:应用程序 ➜ 工作簿 ➜ 工作表 ➜ 范围以及工作表内的其他位置。因此,如果您编写代码来引用 RANGE 对象,它将是这样的:
Application.Workbook(“Workbook-Name”).Worksheets(“Sheet-Name”).Range
通过引用一个单元格或一系列单元格,您可以执行以下操作:
- 您可以读取该值。
- 您可以在那里输入一个值。
- 并且,您可以更改格式。
要完成所有这些操作,您需要学习如何引用一个单元格或一系列单元格,并且在本教程的下一部分中,您将学习如何以不同的方式引用单元格。要引用一个单元格或一系列单元格,您可以使用三种不同的方法。
- 海滩房产
- 细胞特性
- 偏移属性
那么,其中哪一个最好取决于您的需求,但是值得学习所有这三个,以便您可以选择最适合您的一个。
那么,让我们开始吧。
海滩房产
Range 属性是在 VBA 代码中引用范围的最常见和最流行的方式。使用 Range 属性,您只需引用单元格地址即可。让我告诉你语法。
expression.range(address)
这里的表达式是代表 VBA 对象的变量。因此,如果您需要引用单元格 A1,则需要编写的代码行是:
Application.Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
上面的代码告诉 VBA 您正在引用工作表“Sheet1”和工作簿“Book1”中的单元格 A1。
注意:每当您在范围对象中输入单元格地址时,请务必用双引号将其引起来。但这里有一些事情需要理解。由于您在 Excel 中使用 VBA,因此无需使用“应用程序”一词。所以代码是:
Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
而如果你在Book1中,你可以进一步减少你的代码:
Worksheets(“Sheet1”).Range(“A1”)
但是,如果您已经在“Sheet1”工作表中,则可以进一步减少代码并且只能使用:
Range(“A1”)
现在假设您想引用整个单元格范围(即多个单元格),您需要编写如下代码:
Range("A1:A5")
在上面的代码中,您引用了 A1 到 A5 范围,它由五个单元格组成。您还可以使用 range 对象引用命名范围。假设您有一个名为“Sales Discount”的命名范围来引用它,您可以编写如下代码:
Range("Sales Discount")
如果你想引用一个不连续的范围,你需要这样做:
Range("A1:B5,D5:G10")
如果您想引用整行或整列,则需要输入如下代码:
Range("1:1") Range("A:A")
至此,您已经清楚地了解了如何引用单元格以及单元格范围。但要充分利用它,您需要学习如何使用它来做其他事情。
这里我们有一个完整的教程列表,您可以使用它们来学习如何在 VBA 中使用范围和单元格。
- 在 Excel 中使用 VBA 计算行数
- Excel VBA 字体(颜色、大小、类型和粗体)
- Excel VBA 隐藏和显示列或行
- 在 Excel 中使用 VBA 将边框应用于单元格
- 在 Excel 中使用 VBA 查找最后一行、最后一列和单元格
- 在 Excel 中使用 VBA 插入行
- 使用 VBA 代码合并 Excel 中的单元格
- 在 Excel 中使用 VBA 选择范围/单元格
- 使用 VBA 代码选择工作表中的所有单元格
- Excel 中 VBA 中的 ActiveCell
- Excel中VBA中的特殊单元格方法
- Excel 中 VBA 中的UsedRange 属性
- VBA 自动调整(行、列或整个工作表)
- VBA ClearContents(来自单元格、区域或整个工作表)
- VBA将范围复制到另一张工作表+工作簿
- VBA 在单元格中输入值(设置、获取和更改)
- VBA 插入列(单个和多个)
- 名为 VBA | 的范围(静态+选择+动态)
- VBA 范围偏移
- VBA 排序范围 | (降序、多列、排序方向
- VBA 文本换行(单元格、范围和整个工作表)
- VBA检查一个单元格是否为空+多个单元格
1. 选择并激活一个单元格
如果要选择单元格,可以使用范围。选择方法。假设您想选择单元格 A5,您所需要做的就是指定范围,然后在后面添加“.Select”。
Range(“A1”).Select
此代码告诉 VBA 选择单元格 A5,如果您想选择某个单元格范围,只需引用该范围并在其后添加“.Select”即可。
Range(“A1:A5”).Select
您还可以使用另一种方法来激活细胞。
Range(“A1”).Activate
这里你需要记住,你一次只能激活一个细胞。即使您使用“.Activate ”方法指定一个范围,它也会选择该范围,但活动单元格将是该范围中的第一个单元格。
2. 在单元格中输入值
使用 range 属性,您可以在单元格或单元格区域中输入值。让我们用一个简单的例子来理解它是如何工作的:
Range("A1").Value = "Exceladvisor"
在上面的示例中,您指定 A1 作为范围,然后添加“ .Value ”,告诉 VBA 访问单元格的 value 属性。
接下来是等号,然后是要输入的值(如果输入文本值,则必须使用双引号)。对于数字,代码如下:
Range("A1").Value = 9988
如果您想在一系列单元格(我的意思是多个单元格)中输入一个值,那么您所需要做的就是指定该范围。
Range("A1:A5").Value = "Exceladvisor"
如果您指的是非连续范围,这里是代码。
Range("A1:A5 , E2:E3").Value = "Exceladvisor"
3. 复制并粘贴单元格/范围
通过 Range 属性,您可以使用“.Copy”方法复制单元格,然后将其粘贴到目标单元格中。假设您需要复制单元格 A5,相应的代码为:
Range("A5").Copy
当您运行此代码时,它仅复制单元格 A5,但下一步是将复制的单元格粘贴到目标单元格中。为此,您必须在其后添加目标关键字,然后添加要粘贴的单元格。因此,如果您想复制单元格 A1 然后将其粘贴到单元格 E5 中,代码将为:
Range("A1").Copy Destination:=Range("E5")
同样,如果您正在处理一系列多个单元格,则代码将如下所示:
Range("A1:A5").Copy Destination:=Range("E5:E9")
如果您复制了一系列单元格,然后将一个单元格指定为目标范围,VBA 将从您指定为目标的单元格复制整个复制范围。
Range("A1:A5").Copy Destination:=Range("B1")
当您运行上述代码时,VBA 会复制范围 A1:A5 并将其粘贴到 B1:B5 中,即使您只提到 B1 作为目标范围。
提示:就像“.Copy”方法一样,您可以使用“.Cut”方法剪切单元格,然后只需使用目标位置即可粘贴它。
4. 将 Font 属性与 Range 属性结合使用
使用范围属性,您可以访问单元格的字体属性,这可以帮助您更改所有字体设置。您可以访问的字体共有 18 个不同的属性。假设您想将单元格 A1 中的文本设置为粗体,代码如下:
Range("A1").Font.Bold = True
此代码告诉 VBA 访问 A1 范围内字体的 BOLD 属性,并且您已将此属性设置为 TRUE。现在假设您想对单元格 A1应用删除线,时间码为:
正如我所说,您可以使用总共 18 种不同的属性,因此请务必将它们全部检查一遍,看看哪一种对您有用。
5.清除单元格的格式
使用“.ClearFormats”方法,您可以仅清除一个单元格或一系列单元格的格式。您需要做的就是在指定范围后添加“.ClearFormat”,如下所示:
Range("A1").ClearFormats
当您运行上面的代码时,它会清除单元格 A1 中的所有格式,如果您想对整个范围执行此操作,您知道该怎么做,对吗?
Range("A1:A5").ClearFormats
现在上面的代码将简单地删除 A1 到 A5 范围内的格式。
细胞特性
除了 RANGE 属性之外,您还可以使用“单元格”属性来引用工作表中的单元格或单元格区域。在单元格属性中,您需要输入单元格的列号和行号,而不是使用单元格引用。
expression.Cells(Row_Number, Column_Number)
这里的表达式是一个 VBA 对象,Row_Number 是单元格的行号,Column_Number 是单元格的列。所以如果你想引用单元格A5,你可以使用下面的代码:
Cells(5,1)
现在,此代码告诉 VBA 引用第五行第一列中的单元格。正如其语法所示,您必须输入列号作为地址,但实际情况是,如果您愿意,也可以使用列字母表,只需用双引号括起来即可。
下面的代码还将引用单元格 A5:
Cells(5,"A")
在VBA中选择它,只需在末尾添加“.Select”即可。
Cells(5,1).Select
上面的代码将选择工作表第五行第一列的单元格 A5。
偏移量属性
如果您想在 VBA 中很好地使用范围,您需要知道如何使用 OFFSET 属性。引用与另一个单元格相距一定行数和列数的单元格非常有用。
假设您现在的活动单元格是 B5,并且您想要导航到 B5 向右 3 列、向下 1 行的单元格,您可以执行此 SHIFT。以下是用于 OFFSET 的语法:
expression.Offset (RowOffset, ColumnOffset)
- RowOffset:在此参数中,您需要指定一个数字来告诉 VBA 您想要遍历多少行。正数定义向下一行,负数定义向上一行。
- ColumnOffset :在此参数中,您需要指定一个数字来告诉 VBA 您要导航多少列。正数定义右列,负数定义左列。
让我们编写一个简单的代码,例如我们上面讨论的。
- 首先,您需要定义要导航的范围,然后键入以下代码:
- 之后,输入“.Offset”并输入左括号,如下所示:
- 接下来,您需要输入行号,然后输入要导航的列号。
- 最后,您需要添加“.Select”来告诉 VBA 选择您要导航到的单元格。
因此,当您运行此代码时,它会选择单元格 B5 向下一行、右侧 3 列的单元格。
使用 OFFSET 调整范围大小
OFFSET 不仅允许您导航到单元格,还可以进一步调整范围大小。我们继续上面的例子。
Range("B5").Offset(1, 3).Select
上面的代码将您定向到单元格 E6,现在假设您需要选择由 E6 的五列和三行组成的单元格区域。所以你需要做的是在使用OFFSET后,通过添加“.Resize”来使用resize属性。
Range("B5").Offset(1, 3).Resize
现在您需要输入行大小和列大小。键入前导括号并输入数字以设置行大小,然后输入数字以设置列大小。
Range("B5").Offset(1, 3).Resize(3,5)
最后,添加“.Select”来告诉 VBA 选择范围,当您运行此代码时,它将选择范围。
Range("B5").Offset(1, 3).Resize(3, 5).Select
因此,当您运行此代码时,它将选择范围 E6 到 I8。
Range("A1").Font.Strikethrough = True