Microsoft Excel VBA 中的下标越界错误

2025年3月17日 | 阅读 7 分钟

Microsoft Excel VBA 中的“下标超出范围”也通常称为 **运行时错误 9**。当选择的单元格、工作表或工作簿不属于 Microsoft Excel 中预先定义范围或条件时,就会发生此错误。

这就像我们假设了 100 个单元格或一列的特定范围,但我们却调用了存储在同一列中剩余 120 个单元格中的值;这意味着我们超出了范围去选择和调用那些不在我们定义边界内的值。

此外,当我们遇到这种情况时,在编译和运行相应的代码时,我们将收到“运行时错误 9”消息。

除了这些,特定的 VBA 下标超出范围错误消息通常会指导我们(个人)有效地纠正与 Microsoft Excel 中选择的范围相关的错误。

# 示例:Excel VBA“下标超出范围”相关示例

接下来,让我们看看各种示例,这些示例将使我们分别理解 Microsoft Excel 中的 VBA(Visual Basic for Application)下标超出范围错误。

# 示例 1:VBA 下标超出范围

首先,我们将考虑一个简单的示例。为此,我们需要进入 VBA(Visual Basic for Applications)窗口。然后,通过进入“插入”菜单选项添加一个新模块,如下图所示。

Subscript Out of Range Error in Microsoft Excel VBA

之后,我们将得到一个模块窗口(即空白)。这是我们需要高效编写代码的地方。

之后,我们将写出所执行函数的子类别。为方便起见,我们现在将函数的名称有效地分配到子类别中,如下图所示。


Subscript Out of Range Error in Microsoft Excel VBA

在 Microsoft Excel 中,我们只有一个名为“Sheet1”的工作表,如下图所示。

Subscript Out of Range Error in Microsoft Excel VBA

之后,我们将编写代码,目的是选择尚未添加的工作表,然后我们将看到会发生什么。

之后,我们将移动到 VBA(Visual Basic for Application)窗口。然后我们将写出 Sheets(2),后面是相应的 Select 函数,如下图所示。

这意味着我们正在借助 Select 函数选择第 2 个位置的工作表序列。

代码


Subscript Out of Range Error in Microsoft Excel VBA

然后我们将开始编译完整的代码,或者逐步进行,以确认代码的哪个特定部分有错误。

众所周知,我们只有一行代码,我们可以通过单击菜单栏下方的播放按钮直接运行。

运行代码后,我们将在相应的 VBA(Visual Basic for Application)中显示错误消息“**运行时错误 9,下标超出范围**”,如下图所示。

Subscript Out of Range Error in Microsoft Excel VBA

之后,它将告诉我们,我们正在尝试选择根本不存在的特定工作表。如果我们添加一个新工作表,或者当我们将在代码中将工作表序列从 2 更改为 1 时,我们可能会成功运行代码。之后,让我们添加另一个工作表,看看会发生什么。

Subscript Out of Range Error in Microsoft Excel VBA

现在,我们将再次运行代码。运行代码后,如果我们没有看到

任何错误都意味着我们的代码没有错误,我们肯定会得到我们想要的结果。

Subscript Out of Range Error in Microsoft Excel VBA

# 示例 2:Microsoft Excel 中的“下标超出范围”

现在在另一个示例中,我们将再次看到一个简单的代码,用于激活工作表,我们将再次编写代码。然后,我们将以执行函数的名称编写子类别,如下图所示。

代码


Subscript Out of Range Error in Microsoft Excel VBA

现在,借助相应的工作表,我们可以激活 Sheet1,如下图所示。

代码


Subscript Out of Range Error in Microsoft Excel VBA

之后,我们将编译完整的代码,然后运行它。然后,我们将注意到没有弹出错误消息,这意味着代码运行成功。我们将有效地在“Sheet 1”之间留出空格,如下图所示。

Subscript Out of Range Error in Microsoft Excel VBA

然后,之后,我们将再次编译并运行代码,如下图所示。

Subscript Out of Range Error in Microsoft Excel VBA

从上面我们可以看出,即使我们的过程是完整的,并且编写代码的方式也是正确的,我们也使用了有效的表名“Sheet 1”。实际上,“Sheet1”之间没有空格。

它将表明,如果我们没有正确拼写或写出正确的工作表和工作簿名称,仍然有可能出现错误。

# 示例 3:Microsoft Excel 中的“下标超出范围”

接下来,在上面的主题中,在此示例中,我们将看到如何选择可能主要创建然后显示运行时错误 9 的数组范围(不正确的)。

之后,我们将再次以执行函数的名称开始编写子类别,如下图所示。

代码


Subscript Out of Range Error in Microsoft Excel VBA

借助 DIM,我们可以轻松定义任何大小的数组,我们将它赋予字符串或整数,这主要取决于我们想要在数组中存储什么,无论是数字还是文本。

在此示例中,我们使用了 2x3 的字符串数组,如下图所示。

代码


Subscript Out of Range Error in Microsoft Excel VBA

上述操作将创建一个包含 2 行 3 列的表格,然后我们可以根据需要轻松存储任何值。由于我们选择了字符串,因此我们将使用文本或字母。

在代码的第二行中,我们将选择创建的数组,并使用一些额外的列,然后我们将指定一个文本。在这里,我们选择了 2x5 的数组,如下图所示。

代码


Subscript Out of Range Error in Microsoft Excel VBA

之后,我们将编译并运行所需的代码。如下图所示,我们收到了运行时错误 9 的 VBA 下标超出范围错误消息。

Subscript Out of Range Error in Microsoft Excel VBA

忘记此错误的主要原因是,我们选择了不正确的数组范围,即从 2x3 到 2x5,超出了代码限制。现在,如果我们再次选择正确的数组范围 2x3,看看会发生什么?

Subscript Out of Range Error in Microsoft Excel VBA

编译并运行代码后。我们将看到没有收到任何错误,这意味着我们的代码运行成功。

Excel 中“下标超出范围”的优点

与 Microsoft Excel 中 VBA(Virtual Basic for Application)“下标超出范围”相关的优点如下:

  1. Excel 中 VBA(Virtual Basic for Application)“下标超出范围”专门允许我们(个人)了解发生了哪种类型的错误。这样,我们就可以快速准确地找到所获得的错误代码的实际解决方案。
  2. 我们可以使用特定的 VBA 下标超出范围“运行时错误 9”来了解 Microsoft Excel 中通常发生的特定类型的错误。

要记住的事情

使用 Microsoft Excel 中“下标超出范围”的个人需要记住的各种重要事项如下:

  1. 建议个人(从事 Excel VBA 工作的人)在执行函数名称的子类别中使用代码序列,以便在需要时很容易跟踪。
  2. 为避免丢失编写的代码,个人必须将文件分别另存为“启用宏的工作簿”。
  3. 此外,如果个人遇到大量代码行,那么在这种情况下,应该借助按 F8 键逐行编译每行代码。通过这种方法,个人可以收集步骤,并在第一时间判断代码的哪个部分出现错误。