VBA 中的单元格选择

Iqra Hasnain 2023年1月30日 2022年5月26日
  1. 在 VBA 中选择单个单元格
  2. 在 VBA 中选择一系列单元格
  3. 在 VBA 中选择一系列不连续的单元格
  4. 在 VBA 中选择工作表中的所有单元格
  5. 在 VBA 中选择一行
  6. 在 VBA 中选择一列
  7. 在 VBA 中选择列中的最后一个非空单元格
  8. 在 VBA 中选择一行中的最后一个非空单元格
  9. 在 VBA 中选择当前区域
  10. 在 VBA 中选择相对于另一个单元格的单元格
  11. 在 VBA 中选择一个命名范围
  12. 在 VBA 中选择另一个工作表上的单元格
  13. 在 VBA 中操作 Selection 对象
VBA 中的单元格选择

在接下来的这篇文章中,我们将讨论 VBA 中的单元格选择以及如何在 VBA 中选择单元格范围。

VBA 允许我们选择工作表中的一个单元格、单元格范围或所有单元格。你可以使用 Selection 对象操作选定的单元格或内容。

在 VBA 中选择单个单元格

我们可以使用 Select 方法在工作表中选择一个单元格。以下代码将选择 ActiveWorksheet 中的单元格 B2

# VBA
Range("B2").Select

或者我们可以使用另一种方法,如下所示。

# vba
Cells(2, 2).Select

两个代码的输出如下所示。

在 VBA 中选择单个单元格

在 VBA 中选择一系列单元格

我们可以使用 Select 技术和 Range 对象在工作表中选择一组单元格。以下代码将选择 A1:B5,如下所示。

# VBA
Range("A1:B5").Select

输出:

在 VBA 中选择一系列单元格

在 VBA 中选择一系列不连续的单元格

在 VBA 中,你可以通过使用逗号分隔单元格或范围来选择不相邻的单元格或范围。以下代码将允许你选择单元格 B1D1F1,如下所示。

# VBA
Range("B1, D1, F1").Select

输出:

在 VBA 中选择不连续的单元格范围

我们还可以使用 VBA 选择一组不连续的范围。以下代码将选择 A1:A5B5:B8,如下所示。

# VBA
Range("A1:A5, B5:B8").Select

输出:

在 VBA 中选择不连续的单元格范围第 2 部分

在 VBA 中选择工作表中的所有单元格

我们可以在 VBA 的帮助下选择工作表中的所有单元格。下面的代码将选择工作表中的所有单元格。

# VBA
Cells.Select

输出:

使用 VBA 中的工作表选择所有单元格

在 VBA 中选择一行

我们可以借助 Row 对象和我们要选择的行的索引号来选择工作表中的特定行。下面的代码将选择我们工作表中的第一行。

# VBA
Rows(2).Select

输出:

在 VBA 中选择一行

在 VBA 中选择一列

我们可以借助 Column 对象和我们要选择的列的索引号来选择工作表中的特定列。以下代码将在下面的工作表中选择 B 列。

# VBA
Columns(2).Select

输出:

在 VBA 中选择一列

在 VBA 中选择列中的最后一个非空单元格

我们在单元格 B1B2B3B4 中有数据,我们想要选择最后一个非空白单元格,它可能是列中的单元格 B4。我们可以使用 VBA 和 Range.End 方法来执行此操作。

Range.End 方法可以采用这四个选项:xlToLeftxlToRightxlUpxlDown

下面的代码将选择最后一个非空白单元格,在这种情况下为 B4,如果 B1 是活动单元格,如下所示。

# VBA
Range("B1").End(xlDown).Select

输出:

在 VBA 的列中选择非空的最后一个单元格

在 VBA 中选择一行中的最后一个非空单元格

假设我们在单元格 A2B2C2D2E2 中有数据,我们想要选择最后一个非空白单元格,它可能是该行中的单元格 E2 .我们可以使用 VBA 和 Range.End 方法。

下面的代码将选择最后一个非空白单元格,在这种情况下为 E2,如果 A2 是活动单元格,如下所示。

# VBA
Range("A2").End(xlToRight).Select

输出:

在 VBA 中选择一行中的非空最后一个单元格

在 VBA 中选择当前区域

我们可以使用 Range 对象的 CurrentRegion 属性来选择给定输入单元格周围的空白和非空白单元格的矩形范围。如果我们在单元格 A2B2C2 中有数据,以下代码将选择单元格 A2 周围的这个区域:

# VBA
Range("A2").CurrentRegion.Select

输出:

在 VBA 中选择当前区域

在 VBA 中选择相对于另一个单元格的单元格

我们可以使用 Offset 属性来选择一个相对于另一个单元格的单元格。下一个代码向我们展示了如何选择单元格 C3、靠近单元格 A1 的两行和两列。

# VBA
Range("A1").Offset(2, 2).Select

输出:

在 VBA 中使用偏移量选择单个单元格

在 VBA 中选择一个命名范围

我们也可以选择命名范围。假设我们将单元格命名为 B1:B4 代码。

我们可以使用下面的代码来选择这个命名范围,如下图。

# VBA
Range("Code").Select

输出:

在 VBA 中选择一个命名的单元格范围

在 VBA 中选择另一个工作表上的单元格

我们首先需要使用 Worksheets.Activate 方法激活工作表以选择另一个工作表上的单元格。下一个代码将允许你选择 Sheet2 上的单元格 A4

# VBA
Worksheets("Sheet2").Activate
Range("A4").Select

输出:

从 VBA 中的另一个工作表中选择单个单元格

在 VBA 中操作 Selection 对象

一旦我们选择了一个单元格或单元格范围,我们可以参考 Selection 对象来操作这些单元格。以下代码选择单元格 B1:D1 并将这些单元格的字体设置为 Calibri,将字体粗细设置为粗体,将字体样式设置为斜体,并将填充颜色设置为蓝色。

# VBA
Sub newFunc()

Range("B1:D4").Select
Selection.Font.Name = "Calibri"
Selection.Font.Bold = True
Selection.Font.Italic = True
Selection.Interior.Color = vbBlue

End Sub

输出:

在 VBA 中选择范围和更改格式

在 VBA 中使用 With 构造

我们可以使用 WithEnd With 语句关联上面的示例,以仅引用一次 Selection 对象。这会不断输入,通常会使你的代码更易于阅读。

# VBA
Sub newFunc()

Range("B1:D4").Select
With Selection
.Font.Name = "Calibri"
.Font.Bold = True
.Font.Italic = False
.Interior.Color = vbBlue

End With
End Sub

输出:

在 VBA 中使用 with 构造和更改格式选择范围