vba – 运行时错误“9”:下标超出范围

我试图从工作表中的8个不同的表中复制8个不同的范围。 所以我想出了这个编码如下。 我用union方法来组合这些范围,但是它返回了一个

运行时错误“9”:下标超出范围

Set range1 = Sheets("Sheet1").Range("O24")

谁能告诉我我做错了什么地方? 我似乎无法检测到我的错误在哪里。

 Sub ONSHORE() 'Last cell in column Dim WS As Worksheet Dim LastCell As Range Dim LastCellRowNumber As Long Dim range1 As Range, range2 As Range, range3 As Range, range4 As Range, range5 As Range, range6 As Range, range7 As Range, range8 As Range, multipleRange As Range Set range1 = Sheets("Sheet1").Range("O24") Set range2 = Sheets("Sheet1").Range("AA40, AC40") Set range3 = Sheets("Sheet1").Range("AA56, AC56") Set range4 = Sheets("Sheet1").Range("AA72, AC72") Set range5 = Sheets("Sheet1").Range("AA88, AC88") Set range6 = Sheets("Sheet1").Range("AA104, AC104") Set range7 = Sheets("Sheet1").Range("AA120, AC120") Set range8 = Sheets("Sheet1").Range("AA130, AC130") Set multipleRange = Union(range1, range2, range3, range4, range5, range6, range7, range8) Set WS = Worksheets("Sheet1") Dim wb As Workbook, wb2 As Workbook Dim vFile As Variant Dim i As Integer 'Set source workbook Set wb = ActiveWorkbook 'Open the target workbook vFile = Application.GetOpenFilename("Excel-files,*.xlsx", MultiSelect:=True) If IsArray(vFile) Then For i = LBound(vFile) To UBound(vFile) Set wb2 = Workbooks.Open(vFile(i)) 'if the user didn't select a file, exit sub If TypeName(vFile) = "Boolean" Then Exit Sub With WS Set LastCell = .Cells(.Rows.Count, "D").End(xlUp) LastCellRowNumber = LastCell.Row + 1 End With 'Set selectedworkbook Set wb2 = ActiveWorkbook 'Select cells to copy wb2.Worksheets("Sheet1").Range(multipleRange).Copy 'Go back to original workbook you want to paste into wb.Activate 'Paste starting at the last empty row wb.Worksheets("Sheet1").Range("D" & LastCellRowNumber).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Close and save the workbook you copied from wb2.Save wb2.Close Next i Application.ScreenUpdating = True Application.CutCopyMode = False End If End Sub 

我猜测Sheets("Sheet1")不存在。 它可以有一个空格Sheets("Sheet 1")

没有理由联合范围。 下面的代码类似于你的工会。

Set multipleRange = Sheets(“Sheet1”)。Range(“O24,AA40,AA56,AA72,AA88,AA104,AC120,AA130”)

当sheet1丢失的时候,我得到了错误9,而当sheet1在那里没有数据时,错误1004出现了。 所以你的问题的答案是sheet1丢失。