选择工作簿时,运行时错误9下标超出范围

时间:2018-03-20 21:13:03

标签: excel vba excel-vba

我正在尝试使用VBA在Excel 2010中构建数据输入表单。在表单初始化期间,我正在设置一个对象以引用另一个工作表,以便我可以访问它。这就是我所拥有的:

Private Sub UserForm_Initialize()

Dim master As Excel.Workbook
Dim masterworksheetFmn As Excel.Worksheet
Dim masterworksheetAdv As Excel.Worksheet
Dim masterworksheetTechs As Excel.Worksheet

Dim i As Integer

Set master = Excel.Workbooks("ServiceReturnsMaster.xlsm")
Set masterworksheetFmn = master.Worksheets("Foremen")
Set masterworksheetAdv = master.Worksheets("Advisors")
Set masterworksheetTechs = master.Worksheets("Techs")

当我运行宏时,我得到“运行时错误9:下标超出范围”。这发生在这一行:

Set master = Excel.Workbooks("ServiceReturnsMaster.xlsm")

但是,如果我在运行宏之前打开第二个工作簿,则不会发生错误。我假设我必须先激活第二个工作簿或某些东西,否则我的参考文献写得不正确。我可以找到许多对此运行时错误的引用,但没有一个直接解决我正在尝试做的事情。我做错了什么?

1 个答案:

答案 0 :(得分:4)

当您使用Excel.Workbooks时,您指的是通用 Workbooks集合。如果您想访问当前应用中的Workbooks集合,则需要使用Application.Workbooks

您也可以在没有Application限定符的情况下使用它,因为它假设您在当前的应用程序实例中工作,所以

Set master = Application.Workbooks("ServiceReturnsMaster.xlsm")

Set master = Workbooks("ServiceReturnsMaster.xlsm")

两者都应该完全相同。

或者,如果您的工作簿在运行时未打开,则需要使用Workbooks.Open()方法:

Set master = Workbooks.Open("C:\Path\to\ServiceReturnsMaster.xlsm")