Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fehler 438 bei Range.Copy

Fehler 438 bei Range.Copy
02.10.2020 15:09:12
Lara
Hallo Zusammen,
mein nachstehendes Makro läuft bei
"wb2.Range(Cells(5, ColumnIndex2), Cells(44, ColumnIndex2)).Copy" immer auf den Fehler 438: Objekt unterstützt diese Eigenschaft oder Methode nicht.
Die Microsoft-Hilfe verstehe ich an der Stelle nicht.
Sieht einer von euch vielleicht, warum es nicht klappt?
Vielen Dank,
Lara

Sub DatenImportieren1()
Dim wb As Workbook
Dim wb2 As Workbook
Dim Name
Dim Path
Dim FileFound
Dim ColumnIndex2 As Integer
Dim Range
Set wb = ActiveWorkbook
Name = wb.Worksheets("Konsolidierung").Range("V6")
Path = wb.Worksheets("Steuerung").Range("C11")
FileFound = Dir(Path & "\" & "*" & Name & "*.xlsx")
If FileFound  "" Then
Workbooks.Open Path & "\" & FileFound
Set wb2 = ActiveWorkbook
For Each Range In ActiveSheet.Columns("D:R")                                       'Prü _
ft ob die Spalte dem Reportmonat entspricht. Wenn ja, dann wird FoundColumn als wahr definiert
If Range.Cells(4).Value = Cells(1, 2) Then
ColumnIndex2 = Range.Column
wb2.Range(Cells(5, ColumnIndex2), Cells(44, ColumnIndex2)).Copy
'[hier soll es danach weiter gehen...]
End If
Next
End If
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler 438 bei Range.Copy
02.10.2020 15:23:26
Daniel
Hi
Nenne die Variable Range mal anders.
Range ist ja auch eine VBA-Funktion und es kann durchaus sein, dass der Interpreter hier anstelle der VBA-Funktion deine Variable annimmt und das passt ja nicht.
Weiterhin solltest du beachten, dass sich Range und Cells ohne Tabellenblattangabe davor immer auf das aktive Tabellenblatt beziehen, das gilt auch für die Cella innerhalb von Range.
Wenn die Zellen, die die Range definieren sollen au einem anderen Blatt liegen als die Range, kommt es zu einem Fehler.
Ich würde hier den Zellbereich zum kopieren so ansprechen:
wb2.Cells(5, ColumnIndex2).Resize(40, 1).Copy
Gruß Daniel
Anzeige
AW: Fehler 438 bei Range.Copy
02.10.2020 15:30:49
Gerd
Moin,
ungetestet in etwa so:
Sub DatenImportieren2()
Dim wb As Workbook
Dim wb2 As Workbook
Dim Name
Dim Path
Dim FileFound
Dim ColumnIndex2 As Long
Dim objRange As Range
Set wb = ActiveWorkbook
Name = wb.Worksheets("Konsolidierung").Range("V6")
Path = wb.Worksheets("Steuerung").Range("C11")
FileFound = Dir(Path & "\" & "*" & Name & "*.xlsx")
If FileFound  "" Then
Workbooks.Open Path & "\" & FileFound
Set wb2 = ActiveWorkbook
For Each objRange In ActiveSheet.Columns("D:R")                                       ' _
Prü _
ft ob die Spalte dem Reportmonat entspricht. Wenn ja, dann wird FoundColumn als wahr definiert
If objRange.Cells(4).Value = Cells(1, 2) Then
ColumnIndex2 = objRange.Column
wb2.Range(wb2.Range.Cells(5, ColumnIndex2), wb2.Range.Cells(44, ColumnIndex2)). _
Copy
'[hier soll es danach weiter gehen...]
End If
Next
End If
End Sub

Gruß Gerd
Anzeige
AW: Es war 2 x .Range zuuviel
02.10.2020 15:36:17
Gerd

Sub DatenImportieren2()
Dim wb As Workbook
Dim wb2 As Workbook
Dim Name
Dim Path
Dim FileFound
Dim ColumnIndex2 As Long
Dim objRange As Range
Set wb = ActiveWorkbook
Name = wb.Worksheets("Konsolidierung").Range("V6")
Path = wb.Worksheets("Steuerung").Range("C11")
FileFound = Dir(Path & "\" & "*" & Name & "*.xlsx")
If FileFound  "" Then
Workbooks.Open Path & "\" & FileFound
Set wb2 = ActiveWorkbook
For Each objRange In ActiveSheet.Columns("D:R")                                       '  _
_
Prü _
ft ob die Spalte dem Reportmonat entspricht. Wenn ja, dann wird FoundColumn als wahr definiert
If objRange.Cells(4).Value = Cells(1, 2) Then
ColumnIndex2 = objRange.Column
wb2.Range(wb2.Cells(5, ColumnIndex2), wb2.Cells(44, ColumnIndex2)). _
Copy
'[hier soll es danach weiter gehen...]
End If
Next
End If
End Sub

Gruß Gerd
Anzeige
AW: Es war 2 x .Range zuuviel
02.10.2020 15:45:47
Lara
Hallo Gerd,
der angepasste Code wie unten läuft leider immer noch auf den Fehler Laufzeit 438
Sub DatenImportieren1()
Dim wb As Workbook
Dim wb2 As Workbook
Dim Name
Dim Path
Dim FileFound
Dim ColumnIndex2 As Long
Dim objRange As Range
Set wb = ActiveWorkbook
Name = wb.Worksheets("Konsolidierung").Range("V6")
Path = wb.Worksheets("Steuerung").Range("C11")
FileFound = Dir(Path & "\" & "*" & Name & "*.xlsx")
If FileFound  "" Then
Workbooks.Open Path & "\" & FileFound
Set wb2 = ActiveWorkbook
For Each objRange In ActiveSheet.Columns("D:R")                                       ' _
Prüft ob die Spalte dem Reportmonat entspricht. Wenn ja, dann wird FoundColumn als wahr definiert
If objRange.Cells(4).Value = Cells(1, 2) Then
ColumnIndex2 = objRange.Column
wb2.Range(wb2.Cells(5, ColumnIndex2), wb2.Cells(44, ColumnIndex2)).Copy
'[hier soll es danach weiter gehen...]
End If
Next
End If
End Sub

Anzeige
AW: Es war 2 x .Range zuuviel
02.10.2020 15:48:45
chris
So sollte es gehen:

Sub DatenImportieren2()
Dim wb As Workbook
Dim wb2 As Workbook
Dim Name
Dim Path
Dim FileFound
Dim ColumnIndex2 As Long
Dim objRange As Range
Set wb = ActiveWorkbook
Name = wb.Worksheets("Konsolidierung").Range("V6")
Path = wb.Worksheets("Steuerung").Range("C11")
FileFound = Dir(Path & "\" & "*" & Name & "*.xlsx")
If FileFound  "" Then
Workbooks.Open Path & "\" & FileFound
Set wb2 = ActiveWorkbook
For Each objRange In ActiveSheet.Columns("D:R")                                       '  _
_
If objRange.Cells(4).Value = Cells(1, 2) Then
ColumnIndex2 = objRange.Column
wb2.ActiveSheet.Range(wb2.ActiveSheet.Cells(5, ColumnIndex2), wb2.ActiveSheet.Cells(44,  _
ColumnIndex2)).Copy
'[hier soll es danach weiter gehen...]
End If
Next
End If
End Sub
grüße Chris b
Anzeige
AW: Es war 2 x .Range zuuviel
02.10.2020 15:55:50
Gerd
Moin Lara,
ersetze bitte mal in der Schleife wb2 durch ActiveSheet
Gruß Gerd
AW: Fehler 438 bei Range.Copy
02.10.2020 15:33:18
Lara
Hallo Daniel,
auch deine Resize Variante läuft auf die gleiche Fehlermeldung. (vgl. Anpassungen unten)
Grüße, Lara
Sub DatenImportieren1()
Dim wb As Workbook
Dim wb2 As Workbook
Dim Name
Dim Path
Dim FileFound
Dim ColumnIndex2 As Integer
Dim Bereich
Set wb = ActiveWorkbook
Name = wb.Worksheets("Konsolidierung").Range("V6")
Path = wb.Worksheets("Steuerung").Range("C11")
FileFound = Dir(Path & "\" & "*" & Name & "*.xlsx")
If FileFound  "" Then
Workbooks.Open Path & "\" & FileFound
Set wb2 = ActiveWorkbook
For Each Bereich In ActiveSheet.Columns("D:R")                                       'Prü _
ft ob die Spalte dem Reportmonat entspricht. Wenn ja, dann wird FoundColumn als wahr definiert
If Bereich.Cells(4).Value = Cells(1, 2) Then
ColumnIndex2 = Bereich.Column
wb2.Cells(5, ColumnIndex2).Resize(40, 1).Copy
'[hier soll es danach weiter gehen...]
End If
Next
End If
End Sub

Anzeige
AW: Fehler 438 bei Range.Copy
02.10.2020 17:15:50
Daniel
Hi
Da fehlt zwischen dem Workbook (wb2) und der Zelle (cells) noch das Sheet, sonst ist die hierarchische Reihenfolge Datei- Blatt-Zelle nicht vollständig.
Wenn du den Blattnamen kennst:
wb2.Sheets("Tabelle1"). Cells(...
Wenn du ihn nicht kennst, nimm das erste Blatt:
wb2.Sheets(1). Cells(...
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige