错误9超出范围.Sheets(i)

嘿大家我一直在试图find解决我的错误,但我无法find一个类似的例子,在networking上解决这个问题。 我有一个variables(我)设置为3,当它进入循环,然后进入第一个if语句运行正常,文件被复制并插入到表3中,但是一旦它增加到4,并进入第二条if语句我得到错误9

Set wks4 = wkb.Sheets(i) 

这是下面的完整代码,希望你们能帮我一把。

 Set Excel_App = New EXCEL.Application Excel_App.Visible = False Set wkb = EXCEL.Workbooks.Add Set wks = wkb.Sheets(1) 'want first sheet With wks ...... 'extra code involing input to sheet 1 End With Dim wkb2 As EXCEL.Workbook Set wkb2 = EXCEL.Application.Workbooks.Open(strDir & "\DETAILS.xlsx") wkb2.ActiveSheet.Cells.Select Selection.Copy Set wks2 = wkb.Sheets(2) With wks2 .Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ End With wkb2.Close i = 3 Do While Not rstTypes.EOF If rstTypes![TYPE] Like "GROUPED" Then DoCmd.OutputTo acOutputReport, "EXCEL_CBD_CAP_CR", acFormatXLS, strDir & "\SAMEDAY_NEXTDAY_FUTURE.xls", 0 Dim wkb3 As EXCEL.Workbook Set wkb3 = EXCEL.Application.Workbooks.Open(strDir & "\SAMEDAY_NEXTDAY_FUTURE.xls") wkb3.ActiveSheet.Cells.Select Selection.Copy Set wks3 = wkb.Sheets(i) With wks3 .Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End With wkb3.Close i = i + 1 End If If rstTypes![TYPE] Like "GROUPED2" Then DoCmd.OutputTo acOutputReport, "EXCEL_ND/FUT_CAP_CR", acFormatXLS, strDir & "\NEXTDAY_FUTURE.xls", 0 Dim wkb4 As EXCEL.Workbook Set wkb4 = EXCEL.Application.Workbooks.Open(strDir & "\NEXTDAY_FUTURE.xls") wkb4.ActiveSheet.Cells.Select Selection.Copy Set wks4 = wkb.Sheets(i) With wks4 .Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End With wkb4.Close Kill (strDir & "\NEXTDAY_FUTURE.xls") i = i + 1 End If rstTypes.MoveNext Loop 

你可能没有第四个工作表。 根据您的代码,我假设您希望工作表存在,所以您需要在运行时添加工作表。 你应该把wks3和wks4的工作表设置包装在逻辑中,如下所示:

 if wkb.Sheets.Count < i then Set wks3 = wkb.sheets.add end if 

然后呢

 if wkb.Sheets.Count < i then Set wks4 = wkb.sheets.add end if 

这意味着第i张纸不存在,每次你想与一张战略性地放置的纸张进行交互时,请检查:

If i > ThisWorkbook.Worksheets.Count then Exit Do

还记得第一张纸将不同于数组1