我正在做一个涉及使用 Excel VBA 的项目。不幸的是,我对 VBA 还不熟悉,我想我最终在编码时搞糊涂了。这里这是我正在处理的文件。
当我尝试测试表单时,它弹出一个消息框,提示
Run-time error '9': Subscript out of range
当我点击“调试”时,它突出显示了以下行
If wantsBYO = Worksheets("Sheet2").Cells(x + 1, 8) Or wantsBYO = "Unsure" Then
我猜这是因为我在变量初始化方面出了问题,但我不知道该如何修复。请告诉我该怎么做。
答案1
您已将工作簿中的所有工作表重命名为“Sheet2”以外的名称,因此
Worksheets("Sheet2")
将导致错误。将“Sheet2”更改为代码中所需的任何工作表名称,这样就不会出现此错误。
答案2
失败的主要原因有两个:
- 名为“Sheet2”的工作表不存在
x < 0
或x > 1,048,575
(如果使用的是旧格式文件,则为 65,535)
最有可能的是,问题出在您的工作表名称上,正如@CoRrRan 已经提到的那样。通常,我会尝试使用工作表的 CodeName 而不是其名称。CodeName 显示在 VBA 编辑器中的项目查看器中(显示项目中所有对象的树结构,默认情况下停靠在屏幕左侧)。CodeName 不太可能被普通用户更改,因此更可靠。事实上,工作表很可能仍以 Sheet2 作为 CodeName 命名。在这种情况下,您可以将该行更改为:
If wantsBYO = Sheet2.Cells(x + 1, 8) Or wantsBYO = "Unsure" The