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

Do-Schleife kopiert meine Daten nicht

Do-Schleife kopiert meine Daten nicht
07.04.2022 10:29:47
weitschuetz
Hallo zusammen,
ich hab mal wieder Probleme mit einem gebastelten Makro. Dies soll verschiedene Zellen in ein zweites Formular kopieren nach bestimmten Vorgaben. Die Datenreihen wiederholen sich immer wieder und es ändert sich nur der Wert Cells(3 + i, 4), dieser steigt bei jeder Wiederholung um eins. In der Zelle, mit der diese vergliechen wird, ist einen Formel hinterlegt, welche den Wert aus einem anderen Tabellenblatt anzeigt (also z.B. "=Sheet1!A5" und Anzeige ist z.B. 3). Wenn ich das Makro starte, sprint es gleich von dem Do While Schritt auf Application.ScreenUpdating = True Schritt.
Option Explicit

Sub Messdatenimport_B08()
Application.ScreenUpdating = False
Dim Datenquelle2 As String
Dim Name As String
Dim Endung As String
Dim i As Long
Dim j As Long
Dim q As Long
Dim w As Long
Dim e As Long
Dim r As Long
Dim t As Long
Dim z As Long
Name = _
InputBox("Geben Sie den Dateinamen an:", "Datenquelle", "B08_MesswertArchiv_2022_3_24_8_9_43")
Endung = ".xlsx"
Datenquelle2 = Name & Endung
i = 1
Do While Cells(3 + i, 4)  ThisWorkbook.Sheets("Input GC B08").Cells(5, 1)
'Prüfgas
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
Else
'Eingangsmessung vor Reaktoren
If Cells(3 + i, 5) = 1 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 ThisWorkbook.Sheets("Input GC B08").Cells(30 + q, 8) = 0 Then
Range(Cells(3 + i, 43), Cells(3 + i, 52)).Select
Selection.Copy
ThisWorkbook.Activate
Sheets("Input GC B08").Select
Cells(30 + q, 2).Select
q = q + 1
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows(Datenquelle2).Activate
Else
'Eingangsmessung nach Reaktoren
If Cells(3 + i, 5) = 1 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 ThisWorkbook.Sheets("Input GC B08").Cells(30, 8)  0 Then
Range(Cells(3 + i, 43), Cells(3 + i, 52)).Select
Selection.Copy
ThisWorkbook.Activate
Sheets("Input GC B08").Select
Cells(110 + z, 2).Select
z = z + 1
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows(Datenquelle2).Activate
Else
'Reaktor G
If Cells(3 + i, 5) = 0 And Cells(3 + i, 6) = 1 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(45 + w, 2).Select
w = w + 1
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows(Datenquelle2).Activate
Else
'Reaktor H
If Cells(3 + i, 5) = 0 And Cells(3 + i, 6) = 0 And Cells(3 + i, 13) = 1 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(61 + t, 2).Select
t = t + 1
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows(Datenquelle2).Activate
Else
'Reaktor I
If Cells(3 + i, 5) = 0 And Cells(3 + i, 6) = 0 And Cells(3 + i, 13) = 0 And Cells(3 + i, 20) = 1 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(77 + e, 2).Select
e = e + 1
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows(Datenquelle2).Activate
Else
'Reaktor J
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) = 1 Then
Range(Cells(3 + i, 43), Cells(3 + i, 52)).Select
Selection.Copy
ThisWorkbook.Activate
Sheets("Input GC B08").Select
Cells(93 + r, 2).Select
r = r + 1
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows(Datenquelle2).Activate
End If
End If
End If
End If
End If
End If
End If
End If
i = i + 1
Loop
Application.ScreenUpdating = True
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Do-Schleife kopiert meine Daten nicht
07.04.2022 11:03:40
onur
Was bringt es, wenn du nur das nicht funktionierende Makro postest? Diese Makro ist maßgeschneidert auf das Blatt/die Datei und ist alleine weder aussagekräftig noch testbar, weil keiner ausser dir weiss, wie das Blatt bzw die Zellen aussehen, auf die es zugreift bzw die es abfragt.
AW: Do-Schleife kopiert meine Daten nicht
07.04.2022 11:14:07
GerdL
Hallo Weitschütz!

i = 1
Do While Cells(3 + i, 4)  ThisWorkbook.Sheets("Input GC B08").Cells(5, 1)
Hier vergleichst du D4 des aktiven Blattes (wenn der Code in einem allgemeinen Modul steht) bzw. der zugehörigen Tabelle (wenn er in einem Tabellenblattmodul steht) mit E1 vom Blatt Input.... .
Wenn diese übereinstimmen, wird die Schleife nicht durchlaufen.
Vermutlich wolltest du zuerst eine andere Datei öffnen bzw. aktivieren!?, machst es aber nicht.
Gruß Gerd
Anzeige
AW: Do-Schleife kopiert meine Daten nicht
07.04.2022 11:21:50
GerdL
Ich korrigiere mich partiell
..mit A5 vom Blatt Input.... .
Gruß Gerd
AW: Do-Schleife kopiert meine Daten nicht
07.04.2022 13:55:41
weitschuetz
Servus Gerd,
das war mein Fehler, das war die erste Version vom Code, hab vergessen das zu korrigieren als ich es hier gepostet hab. Hab das jetzt ein bisschen angepasst, aber es macht immer noch nichts.
i = 1
Do While Workbooks(Datenquelle2).Sheets("Tabelle1").Cells(3 + i, 4) = ThisWorkbook.Sheets("Input GC B08").Cells(5, 1)
Windows(Datenquelle2).Activate
'Prüfgas
If Rows(3 + i).EntireRow.Hidden = False Then.
!...usw.!
Datenquelle2 ist die Datei, aus welcher die Dateien kopiert werden sollen. Da diese jedesmal einen anderen Name hat, wird dieser zuvor in einer Inputbox angegeben
Anzeige
AW: Do-Schleife kopiert meine Daten nicht
07.04.2022 14:09:23
GerdL
Moin,
lasse dir die beiden Werte vom Schleifenkopf im Überwachungsfenster anzeigen u. teste das Makro mit der F8-Taste
im Einzelschrittmodus.
Gruß Gerd
AW: Do-Schleife kopiert meine Daten nicht
07.04.2022 11:22:15
Daniel
Hi
wenn die Schleife kein einziges mal ausgeführt wird, dann liegt das daran, dass deine Schleifenbedingung schon beim ersten mal nicht erfüllt ist.
Do While Cells(3 + i, 4) ThisWorkbook.Sheets("Input GC B08").Cells(5, 1)
dh du solltest dir mal die Zelle D4 im aktiven Blatt und die Zelle A5 im Blatt "Input GC B08" anschauen, ob da nicht das gleiche drin steht und dann deine Programmierung nochmal überdenken.
Gruß Daniel
Anzeige
AW: Do-Schleife kopiert meine Daten nicht
07.04.2022 11:25:18
UweD
Hallo
Select und Activate ist in 99% der Fälle nicht notwendig.
Dazu musst du aber genau die jeweiligen Tabellen referenzieren
so in der Art

Sub Messdatenimport_B08()
Application.ScreenUpdating = False
Dim Datenquelle2 As String, Name As String, Endung As String
Dim i As Long, j As Long, q As Long, w As Long
Dim e As Long, r As Long, t As Long, z As Long
Dim WB1 As Workbook, WB2 As Workbook, TB1 As Worksheet, TB2 As Worksheet
Name = _
InputBox("Geben Sie den Dateinamen an:", "Datenquelle", "B08_MesswertArchiv_2022_3_24_8_9_43")
Endung = ".xlsx"
Datenquelle2 = Name & Endung
Set WB1 = Workbooks(Datenquelle2)
Set TB1 = WB1.Sheets("Input GC B08")
Set WB2 = ThisWorkbook
Set TB2 = WB2.Sheets("Input GC B08")
i = 1
With TB1
Do While .Cells(3 + i, 4)  TB2.Cells(5, 1)
'Prüfgas
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
TB2.Cells(7 + j, 2).Resize(1, 10).Value = .Range(.Cells(3 + i, 43), .Cells(3 + i, 52)).Value
j = j + 1
Else
'Eingangsmessung vor Reaktoren
If .Cells(3 + i, 5) = 1 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 TB2.Cells(30 + q, 8) = 0 Then
TB2.Cells(30 + q, 2).Resize(1, 10).Value = .Range(.Cells(3 + i, 43), .Cells(3 + i, 52)).Value
q = q + 1
Else
'Eingangsmessung nach Reaktoren
'.....usw
End If
End If
i = i + 1
Loop
End With
Application.ScreenUpdating = True
End Sub
Evtl. ist hier schon der Fehler drin. Mangels Daten kann ich das nicht prüfen
Was mir auch aufgefallen ist, dass du immer wieder die gleichen Werte abfragst.
das kannst du nach oben verlagern und nur 1x prüfen und jeweils dann nur die Unterschiede zusätzlich
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige