Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1876to1880
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

Makro zum Datenimport Zeile für Zeile

Makro zum Datenimport Zeile für Zeile
29.03.2022 11:10:47
weitschuetz
Servus zusammen,
ich hab mir ein Marko gebastelt, welches in der Datei A Zeile für Zeile schauen soll, ob bestimmte Kriterien erfüllt sind und dann einen kleinen Teil der Zeile in eine Datei B
in einen bestimmten Bereich untereinander kopieren soll.
Der Code sieht wie folgt aus:
Option Explicit

Sub Messdatenimport()
Application.ScreenUpdating = False
Dim i As Long
Dim j As Long
For i = 1 To 9
If Cells(3 + i, 5) = 0 And Cells(3 + i, 6) = 0 And Cells(3 + i, 13) = 0 And Cells(3 + i, 20) = 0 And Cells(3 + i, 27) = 0 And Cells(3 + i, 43)  0 Then
Range(Cells(3 + i, 43), Cells(3 + i, 52)).Select
Selection.Copy
Windows(Datei_B.xlsm").Activate
Sheets("Input GC B08").Select
Cells(6 + j, 2).Select
j = j + 1
ActiveSheet.Paste
End If
Next i
Application.ScreenUpdating = True
End Sub
In Spalte 5,6,13,20 und 27 steht entweder 0 oder 1, was anderes steht da nicht drin. In Spalte 43 steht entweder nichts oder ein Datum. In den Zeilen 4 bis 9 (Werte für i = 1 bis 6) der Spalte 43 steht nichts drin und das Makro übersprint mir auch brav diese Zeilen. In Zeile 10 (i-Wert 7) der Spalte 43 steht das erste mal ein Datum drin und die Zellen werden dann auch entsprechend richtig in die Datei B kopiert. Bei Zeile 11 (i-Wert 8) der Spalte 43 steht wieder nicht drin. Hier bricht das Makro ab und bringt einen Laufzeitfehler 13 Typen unverträglich. Der Debugger makiert mir die Zeile "If Cells...." gelb. Kann mir jemand von euch weiterhelfen, wo ich meinen Fehler habe?
Gruß
Markus

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Korrekte Referenzierung
29.03.2022 11:21:58
{Boris}
Hi,
in dem Moment, wo Du die andere Mappe aktivierst (die If-Abfrage also das erste mal True liefert), bezieht sich Cells(...) auf die aktivierte Mappe und nicht mehr auf die Quellmappe.
Bekommst Du den Rest selbst hin?
VG, Boris
AW: Korrekte Referenzierung
29.03.2022 11:31:43
ReginaR
... logisch... ich habe erst umgebaut und dann getestet :-)
Gruß Regina
AW: Korrekte Referenzierung
29.03.2022 12:49:28
weitschuetz
Danke dir Boris.
Ouh man so ein Leichtsinnsfehler.
Habs hinbekommen und jetzt läufts.
Danke dir auch ReginaR.
Gruß
Markus
AW: Korrekte Referenzierung
29.03.2022 13:10:30
weitschuetz
Hab mich zu früh gefreut. Den Wert für i hab ich bis 100 erweitert, in diesem Bereich liegen 20 Zeilen, die zu kopieren sind, Allerdings hört das Makro nach drei kopierten Zeilen auf, der Wert für i ist dabei 16. Woran könnte das liegen?
Gruß
Markus
Anzeige
AW: Korrekte Referenzierung
29.03.2022 14:32:13
GerdL
Hallo Markus,
an den Bedingungen wird es liegen.
Nach den jetzt allerdings überholten Anforderungen:

Sub Unit()
Dim i As Long, Bereich As Range
For i = 4 To 12
If Application.Sum(Cells(i, 5), Cells(i, 6), Cells(i, 13), Cells(i, 20), Cells(i, 27)) = 0 Then
If Cells(i, 43)  0 Then
If Bereich Is Nothing Then
Set Bereich = Range(Cells(i, 43), Cells(i, 52))
Else
Set Bereich = Union(Bereich, Range(Cells(i, 43), Cells(i, 52)))
End If
End If
End If
Next
If Not Bereich Is Nothing Then Call Bereich.Copy(Destination:=Workbooks("Datei_B-xlsm").Sheets("Input GC B08").Cells(6, 2))
Set Bereich = Nothing
End If
End Sub
Gruß Gerd
Anzeige
AW: Korrekte Referenzierung
30.03.2022 13:03:27
weitschuetz
Danke dir Gerd für deinen Vorschlag, hab das erst jetzt gesehen und mein Makro schon ein bisschen anders programmiert. Soweit funktioniert es auch gut nur mit einer Abfrage klappt es nicht:

Sub Messdatenimport_B08()
Application.ScreenUpdating = False
Dim Datenquelle2 As String
Dim i As Long
Dim j As Long
If ThisWorkbook.Sheets("Input GC B08").Cells(6, 1)  0 Or ThisWorkbook.Sheets("Input GC B08").Cells(6, 1)  "-" Then
For i = 1 To 100
If Rows(3 + i).EntireRow.Hidden = False Then
If Cells(3 + i, 5) = 0 And Cells(3 + i, 6) = 0 And Cells(3 + i, 13) = 0 And Cells(3 + i, 20) = 0 And Cells(3 + i, 27) = 0 Then
Range(Cells(3 + i, 43), Cells(3 + i, 52)).Select
Selection.Copy
ThisWorkbook.Activate
Sheets("Input GC B08").Select
Cells(7 + j, 2).Select
j = j + 1
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows(Datenquelle2).Activate
End If
End If
Next i
End If
Application.ScreenUpdating = True
End Sub
In der ersten If-Abfrage, wenn ich da nur den Teil mit der 0 schreibe klappt es und das Makro kopiert mir alles gewünschte, wenn die abgefragte Zelle ungleich 0 ist. Sobald ich den zweiten Teil einfügen und in der abgefragten Zelle ein "-" steht kopiert mir das Makro trotzdem alles, obwohl es dies nicht soll. Kann mir hierzu jemand weiterhelfen?
Gruß
Markus
Anzeige
AW: Makro zum Datenimport Zeile für Zeile
29.03.2022 11:24:43
ReginaR
Hi,
ich habe das mal grob nachgebaut. Ich kann den fehler hier nicht nachvollziehen, bei mir läuft der Code durch und liefert das gewünschte Ergebnis.
Lade doch mal eine Beispieldatei hoch, in der der Fehler auftritt.
Hier den Code mal etwas verkürzt:

For i = 1 To 9
If Cells(3 + i, 5) = 0 And Cells(3 + i, 6) = 0 And Cells(3 + i, 13) = 0 And Cells(3 + i, 20) = 0 And Cells(3 + i, 27) = 0 And Cells(3 + i, 43)  0 Then
Range(Cells(3 + i, 43), Cells(3 + i, 52)).Copy _
Workbooks("Datei_B.xlsm").Sheets("Input GC B08").Cells(6 + j, 2)
j = j + 1
End If
Next i
Gruß Regina
Anzeige

111 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige