Microsoft Lab
全部软件
Excel宏错误(Macro Errors)约 4 分钟

Subscript Out of Range 下标超出范围错误

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


场景一:引用没打开的工作簿

Workbooks("sales.xlsm").Close

如果 "sales.xlsm" 这份文件根本没打开,就会报错。解法:执行这行之前先确认该工作簿已经打开。

📷 画面提示

运行代码后弹出的 "Run-time error '9': Subscript out of range" 报错对话框


场景二:引用不存在的工作表

假设工作簿里只有 3 张工作表:

Worksheets(4).Range("A1").Value = "Hello"

引用第 4 张工作表会报错,因为根本不存在。解法:把编号改成 1、2、3 之间,或者先新增一张工作表。


场景三:数组元素超出范围

Dim Films(1 To 5) As String

Films(1) = "Lord of the Rings"
Films(2) = "Speed"
Films(3) = "Star Wars"
Films(4) = "The Godfather"
Films(5) = "Pulp Fiction"

MsgBox Films(6)

数组只声明了 1 到 5,引用 Films(6) 会报错。解法:只引用 1 到 5 之间的编号,或者把数组声明得更大。


学完你会

常见错误

  • 引用工作簿/工作表/数组之前,没有先确认这个对象或编号实际存在
  • 数组或工作表数量后来改变了(增删),代码里写死的编号数字没有跟着更新
  • 把这个错误跟 EP04 提到的「无限循环」等其他常见 VBA 错误搞混,排查方向找错

Sources

Blog / Website:

  1. Subscript Out of Range
只记在你的浏览器里,换设备不会同步。