如何在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")

至此,您已经清楚地了解了如何引用单元格以及单元格范围。但要充分利用它,您需要学习如何使用它来做其他事情。

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 您要导航多少列。正数定义右列,负数定义左列。

让我们编写一个简单的代码,例如我们上面讨论的。

  1. 首先,您需要定义要导航的范围,然后键入以下代码:
    define-the-range
  2. 之后,输入“.Offset”并输入左括号,如下所示:
    type-offset
  3. 接下来,您需要输入行号,然后输入要导航的列号。
    enter-row-and-column number
  4. 最后,您需要添加“.Select”来告诉 VBA 选择您要导航到的单元格。
    add-select-to-tell-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

添加评论

您的邮箱地址不会被公开。 必填项已用 * 标注