Laufzeitfehler 9:Index außerhalb des gültigen Bere

Hallo Zusammen,
ich möchte von einer Excel-Datei in eine andere kopieren. Also hab ich erst mal tief gestapelt und das Macro von einem Tabellenblatt der Quelldatei auf ein anderes Tabellenblatt der Quelle kopieren lassen. Das hat auch ganz gut funktioniert. Auf diesem Höhenflug der Gefühle wurde ich mutig: ich hab das mit der anderen Datei im gleichen Verzeichnis probiert.
Aber nun kommt der oben genannte Fehler.

Sub Übertrag_CAM_Test()
Dim X As Long, n As Long, ws1 As Worksheet, ws2 As Worksheet

Set ws1 = ThisWorkbook.Worksheets(„Fräsen“)
Set ws2 = Workbooks(„Test CAM.xlsx“).Worksheets(„Tabelle1“)

Application.ScreenUpdating = False
Workbooks.Open („Test CAM.xlsx“)

With ws1
For n = 2 To 32
If .Cells(31, n) >= 1 Then
.Cells(31, n).Copy Destination:=ws2.Range(„b65536“).End(xlUp).Offset(1, 0)
.Cells(32, n).Copy Destination:=ws2.Range(„b65536“).End(xlUp).Offset(0, 1)
.Cells(33, n).Copy Destination:=ws2.Range(„b65536“).End(xlUp).Offset(0, 2)

If .Cells(33, n) > 0 And .Cells(32, n) > 0 Then
ws2.Range(„b65536“).End(xlUp).Offset(0, 3).Value = ws2.Range(„b65536“).End(xlUp).Offset(0, 1).Value / ws2.Range(„b65536“).End(xlUp).Offset(0, 2).Value
End If

.Cells(30, 2).Copy Destination:=ws2.Range(„b65536“).End(xlUp).Offset(0, -1)
.Cells(30, 14).Copy Destination:=ws2.Range(„b65536“).End(xlUp).Offset(0, 4)
End If

Next n
End With
Workbooks(„Test CAM.xlsx“).Close savechanges:=True
Application.ScreenUpdating = True

End Sub

Die zweite Frage ist: was verursacht diesen Laufzeitenfehler? Ein Fehler in der Festlegung der Variablen? Möchte gern verstehen, was ich da falsch gemacht hab.

Hallo Senor,

erst die Arbeitsmappe öffnen, dann auf die Tabelle zugreifen. Also lautet der korrigierte Code

Sub Übertrag\_CAM\_Test()
Dim X As Long, n As Long
Dim ws1 As Worksheet, ws2 As Worksheet

Workbooks.Open ("Test CAM.xlsx")
Set ws1 = ThisWorkbook.Worksheets("Fraesen")
Set ws2 = Workbooks("Test CAM.xlsx").Worksheets("Tabelle1")

Application.ScreenUpdating = False


With ws1
For n = 2 To 32
If .Cells(31, n) \>= 1 Then
.Cells(31, n).Copy Destination:=ws2.Range("b65536").End(xlUp).Offset(1, 0)
.Cells(32, n).Copy Destination:=ws2.Range("b65536").End(xlUp).Offset(0, 1)
.Cells(33, n).Copy Destination:=ws2.Range("b65536").End(xlUp).Offset(0, 2)

If .Cells(33, n) \> 0 And .Cells(32, n) \> 0 Then
ws2.Range("b65536").End(xlUp).Offset(0, 3).Value = ws2.Range("b65536").End(xlUp).Offset(0, 1).Value / ws2.Range("b65536").End(xlUp).Offset(0, 2).Value
End If

.Cells(30, 2).Copy Destination:=ws2.Range("b65536").End(xlUp).Offset(0, -1)
.Cells(30, 14).Copy Destination:=ws2.Range("b65536").End(xlUp).Offset(0, 4)
End If

Next n
End With
Workbooks("Test CAM.xlsx").Close savechanges:=True
Application.ScreenUpdating = True


End Sub

mfg
Michael

Hallo Michael,

Danke für den Hinweis. Allerdings bekomme ich jetzt nen Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler.
Vielleicht einen Tipp woran das liegen kann?

Grüße,
Senor

Danke für den Hinweis. Allerdings bekomme ich jetzt nen
Laufzeitfehler 1004: Anwendungs- oder objektdefinierter
Fehler.

Hola Senor,

gib bei sowas immer die Codezeile an wo es auftritt.
Ggfs. den Code mit F8 durchgehen.

Gruß
Reinhard

Hallo Senor,

diesen Fehler bekommst du, weil Excel die Datei „Test CAM.xlsx“ nicht findet. Stelle sicher, das sich beide Dateien im selben Verzeichnis befinden, oder gib als Dateiname den absoluten Pfad an. Also z.B.:
Workbooks.Open („c:\test\Test CAM.xlsx“)

mfg Michael

Hallo Michael,

perfekt! Funktioniert! Super :smile:
Vielen Dank! Jetzt kann ich bald (in ca. 4h) mein Wochenende richtig genießen! Selbiges wünsch ich Dir auch!

Grüße,
Senor

Hallo Reinhard,

vielen Dank - das Problem lag am Pfad der Datei.
Cooler Tip mit F8.
Wünsch schon mal ein angenehmes Wochenende,
Grüße,
Senor