Ich versuche, 8 verschiedene Bereiche aus 8 verschiedenen Tabellen in einem Arbeitsblatt zu kopieren. Also habe ich diese Codierung unten entwickelt. Ich benutzen Vereinigung Methode, um diese Bereiche zu kombinieren, aber es ergab einvba - Laufzeitfehler '9': Index außerhalb des Bereichs
Laufzeitfehler ‚9‘: Index außerhalb des zulässigen Bereichs
auf der folgenden Zeile Set range1 = Sheets("Sheet1").Range("O24")
.
Kann mir jemand sagen, wo ich falsch gemacht habe? Ich kann nicht erkennen, wo mein Fehler ist.
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
Sind Sie sicher, dass Sie ein Blatt mit dem Namen "Sheet1" haben? Wenn Sie die Zeile 'Set WS = Worksheets (" Sheet1 ")' nehmen und über diese Zeilen setzen, gibt es einen Fehler zurück? –
Ich habe meine Codierung geändert, wie Sie gesagt haben. Es wurde immer noch ein Fehler zurückgegeben. – Deve1
was bedeutet, dass Sie kein Blatt namens "Sheet1" haben, oder? –