初始化变量

初始化变量

我正在做一个涉及使用 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 < 0x > 1,048,575(如果使用的是旧格式文件,则为 65,535)

最有可能的是,问题出在您的工作表名称上,正如@CoRrRan 已经提到的那样。通常,我会尝试使用工作表的 CodeName 而不是其名称。CodeName 显示在 VBA 编辑器中的项目查看器中(显示项目中所有对象的树结构,默认情况下停靠在屏幕左侧)。CodeName 不太可能被普通用户更改,因此更可靠。事实上,工作表很可能仍以 Sheet2 作为 CodeName 命名。在这种情况下,您可以将该行更改为:

If wantsBYO = Sheet2.Cells(x + 1, 8) Or wantsBYO = "Unsure" The

相关内容