Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1796to1800
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 im Code

Fehler im Code
02.12.2020 10:09:17
Sarah
Guten Morgen, ich habe mich jetzt selber mal an einem Code probiert:
Sub Test()
Dim lngRow As Long
Dim lngColumn As Long
Dim DateRow As Long
With Worksheets("Import2")
For lngRow = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
For lngColumn = 3 To Worksheets("Tabelle2").Cells(1, .Columns.Count).End(xlToLeft).Column
For DateRow = 8 To Worksheets("Tabelle2").Cells(.Rows.Count, 1).End(xlUp).Row Step 24
If .Cells(lngRow, 1).Value = Worksheets("Tabelle2").Cells(1, lngColumn).Value Then
If .Cells(lngRow, 8).Value = Worksheets("Tabelle2").Cells(DateRow,1).Value Then
'wenn beide If Bedingungen stimmen, dann:
.Range(.Cells(lngRow, 10), .Cells(lngRow, 33)).Copy
Worksheets("Tabelle2").Cells(DateRow, 3).PasteSpecial Paste:= _
xlPasteValues, Transpose:=True
Else
'Wenn "If .Cells(lngRow, 8).Value = Worksheets("Tabelle2").Cells( _
DateRow, 1).Value Then" nicht stimmt:
'Dann nächste Zeile in Tabelle2 Prüfen
Next DateRow
End If
Else
'wenn "If .Cells(lngRow, 1).Value = Worksheets("Tabelle2").Cells(1,lngColumn).Value  _
Then" nicht stimmt:
Next lngColumn
End If
Next lngRow
End With
End Sub

Aus logischer Sicht macht der Code für mich Sinn.
Aber ich habe wahrscheinlich ein paar Anfängerfehler beim coden gemacht.
Aktuelle Fehlermeldung: Next ohne For.
kann mir bitte jemand helfen den code funktionsfähig zu bekommen?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler im Code
02.12.2020 10:16:52
ralf_b
tchja dein Next DateRow hat sich verirrt. Da es mitten in einer if Verzweigung steht, killt es die Programmlogik und vba weis nicht mehr wie es die Schleifen zuordnen soll.
AW: Fehler im Code
02.12.2020 10:29:55
worti
Hallo Sarah,
ich denk, du willst es so:
Sub Test()
Dim lngRow As Long
Dim lngColumn As Long
Dim DateRow As Long
With Worksheets("Import2")
For lngRow = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
For lngColumn = 3 To Worksheets("Tabelle2").Cells(1, .Columns.Count).End(xlToLeft). _
Column
If .Cells(lngRow, 1).Value = Worksheets("Tabelle2").Cells(1, lngColumn).Value  _
Then
For DateRow = 8 To Worksheets("Tabelle2").Cells(.Rows.Count, 1).End(xlUp). _
Row Step 24
If .Cells(lngRow, 8).Value = Worksheets("Tabelle2").Cells(DateRow, 1). _
Value Then
'wenn beide If Bedingungen stimmen, dann:
.Range(.Cells(lngRow, 10), .Cells(lngRow, 33)).Copy
Worksheets("Tabelle2").Cells(DateRow, 3).PasteSpecial Paste:= _
xlPasteValues, Transpose:=True
End If
Next DateRow
End If
Next lngColumn
Next lngRow
End With
End Sub

Gruß Worti
Anzeige
Verzweiflung
02.12.2020 11:58:16
Sarah
Ich verzweifle von vorne bis hinten.
diese mehrfachen Schleifen sind einfach zu schwer.
Mein Wissen reicht da nicht ansatzweiße aus um das selber hin zu bekommen.
1. If bedingung:"If .Cells(lngRow, 1).Value = Worksheets("Tabelle2").Cells(1, lngColumn).Value Then"
Diese If bedingung soll mir die komplette Zeile 1 in Tabelle2 durchgehen und prüfen ob ein wert davon übereinstimmt.
Wenn diese Bedingung nicht stimmt, soll in der Zeile 1, in der rechtesten beschriebenen Spalte der Wert eingefügt werden:
".Range(.Cells(lngRow, 1), .Cells(lngRow, 7)).Copy
Worksheets("Tabelle2").Cells(DateRow, 3).PasteSpecial Paste:=xlPasteValues, Transpose:=True"
Wenn diese Bedingung stimmen sollte, und ein wert überreinstimmt,soll es dann direkt die nächste if bedingung prüfen:
2. If Bedigung: "If .Cells(lngRow, 8).Value = Worksheets("Tabelle2").Cells(DateRow, 1).Value Then"
wenn beide If Bedingungen stimmen, dann:
".Range(.Cells(lngRow, 10), .Cells(lngRow, 33)).Copy
Worksheets("Tabelle2").Cells(DateRow, lngColumn).PasteSpecial Paste:=xlPasteValues, Transpose:=True"
wenn die 1. stimmt aber die 2. nicht soll es in der Spalte A die ab Zeile 8 nach einer Übereinstimmung suchen, in 24er schritten.
---------
was ich bis jetzt habe und definitiv falsch ist bzw die funktion nicht ganz erfüllt:
Sub Test()
Dim lngRow As Long
Dim lngColumn As Long
Dim DateRow As Long
With Worksheets("Import2")
For lngRow = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
For lngColumn = 3 To Worksheets("Tabelle2").Cells(1, .Columns.Count).End(xlToLeft).  _
_
Column
If .Cells(lngRow, 1).Value = Worksheets("Tabelle2").Cells(1, lngColumn).Value _
Then
For DateRow = 8 To Worksheets("Tabelle2").Cells(.Rows.Count, 1).End(xlUp).  _
_
Row Step 24
If .Cells(lngRow, 8).Value = Worksheets("Tabelle2").Cells(DateRow, 1).  _
_
Value Then
'wenn beide If Bedingungen stimmen, dann:
.Range(.Cells(lngRow, 10), .Cells(lngRow, 33)).Copy
Worksheets("Tabelle2").Cells(DateRow, 3).PasteSpecial Paste:= _
xlPasteValues, Transpose:=True
End If
Next DateRow
Else
.Range(.Cells(lngRow, 1), .Cells(lngRow, 7)).Copy
Worksheets("Tabelle2").Cells(DateRow, 3).PasteSpecial Paste:=xlPasteValues,  _
Transpose:=True
End If
Next lngColumn
Next lngRow
End With
End Sub

Anzeige
AW: Verzweiflung
02.12.2020 19:06:10
ralf_b
Sorry, Textaufagben sind auch für mich nicht ganz so einfach. Besser man hat was Handfestes. Thema Beispieldatei und genaue aber kurze Beschreibung.
Für die Übersichtlichkeit im Code gibt es Einrückungen.
Das macht's schon einiges einfacher.
Und, man solls nicht glauben. Manchmal hilft auch ein Stift und ein Blatt Papier um sich die Abläufe mal aufzumalen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige