Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

End With one With

Forumthread: End With one With

End With one With
18.05.2021 16:36:48
Christian
Hallo,
ich bitte um eure Hilfe. Be untem stehenden Makro bekomme ich beim Asführen die Meldung End With one With.
Ich habe aber keine Ahnung wo ein With fehlen sollte.
Markiert wird das End With in der 3.letzen Zeile
Bitte helft mir.
Gruß
Christian
End With one With

Sub Makro3()
Dim loLetzte As Long, j As Long, x As Long, lC As Long
Application.ScreenUpdating = False
With Worksheets("Ergebnis")
loLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
.Range("B1:C1").Copy .Range("B1:C" & loLetzte)
.Range("B2:C" & loLetzte).Formula = .Range("B2:C" & loLetzte).Value2
.Range("E1:F1").Copy .Range("E2:F" & loLetzte)
.Range("E2:F" & loLetzte).Formula = .Range("E2:F" & loLetzte).Value2
.Range("Q1") = "Formel"  'Zeile 1 markieren!!
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range("C1:C" & loLetzte), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=.Range("F1:F" & loLetzte), SortOn:=xlSortOnValues, _
Order:=xlDescending, DataOption:=xlSortNormal
With .Sort
.SetRange Range("A1:P1" & loLetzte)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Zeile der Markierung in Spalte l suchen
x = .Cells(Rows.Count, 17).End(xlUp).Row
'Formeln ggf. in Zeile1 zurück kopieren
If x > 1 Then
.Cells(x, 2).Resize(1, 2).Copy .Range("B1")
.Cells(x, 5).Resize(1, 12).Copy .Range("E1")
.Cells(x, 5).Copy .Range("E1")
.Rows(x).Value = .Rows(x).Value
.Range("G1:P1").Copy .Range("G2:P" & loLetzte)
.Range("G2:P" & loLetzte).Formula = .Range("G2:P" & loLetzte).Value2
.Cells(x, 17) = Empty 'markierung löschen
.Range("A1").Select
End With
Application.CutCopyMode = False
End Sub
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: End With one With
18.05.2021 16:42:56
Mullit
Hallo,
bedeutet idF: If ohne end if....

If x > 1 Then .Cells(x, 2).Resize(1, 2).Copy .Range("B1") .Cells(x, 5).Resize(1, 12).Copy .Range("E1") .Cells(x, 5).Copy .Range("E1") .Rows(x).Value = .Rows(x).Value .Range("G1:P1").Copy .Range("G2:P" & loLetzte) .Range("G2:P" & loLetzte).Formula = .Range("G2:P" & loLetzte).Value2 .Cells(x, 17) = Empty 'markierung löschen .Range("A1").Select End With
Gruß, Mullit
Anzeige
AW: End With one With
18.05.2021 16:54:49
Christian
Hallo Mullit,
danke.
du hast recht, ich hab beim Code schreiben echt ein End If vergessen.
Jetzt funktioniert es. Aber warum meint Excel dann es würde ein With fehlen?
Gruß
Christian
AW: End With one With
18.05.2021 17:11:07
onur
Weil das "End With" nun mal (in deinem Code) NACH dem "End If" kommen muss und Excel deswegen dort KEIN "End With" erwartet.
Anzeige
AW: End With one With
18.05.2021 17:13:29
Christian
Hallo Onur,
danke für die Erklärung. Wieder was gelernt.
Gruß
Christian
Gerne !
18.05.2021 17:24:13
onur
Der Compiler bzw die Syntaxüberprüfung steigt nun mal beim ERSTEN Fehler aus, der gefunden wurde.
Wenn du jetzt drauf reagieren und das "End With" löschen würdest, würde endlich das Fehlen von "End If" moniert werden.
Wenn du daraufhin "End If" an die richtige Stelle setzen würdest, würdest, würde dann das Fehlen von "End With" moniert werden.
Anzeige
AW: End With one With
18.05.2021 17:13:29
Daniel
Hi
das hängt damit zusammen, dass
- alle WITH-END-WTIH, IF-THEN-END IF, FOR-NEXT, DO-LOOP, SELECT-CASE-END SELECT immer wie Matroschkas ineinander geschachtelt werden müssen.
- der Compiler den Code für die Syntaxprüfung von oben nach unten durchgeht und immer den ersten auffallenden Fehler meldet
wenn du jetzt in diesem Konsturkt

With xxx
IF x Then
End IF
End With
das END IF weglässt, dann steht das das END WITH innerhalb des IF-Blocks und kann damit nicht zum WITH xxx gehören, welches vor dem IF und damit außerhalb des IF-Blocks steht.
dh das End With zu diesem With muss auch außerhalb des IF-Blocks stehen und kann somit erst nach dem End If stehen, dh jetzt noch nicht, sondern später
da das End With sich somit noch innerhalb des IF-Blocks befindet, muss das dazugehörige WITH auch innerhalb des If-Blocks sein, dh zwischen deim IF und den End With. Da befindet sich aber keines, daher der Fehler "End With ohne With".
Das eigentlich fehlende End If könnte zu einem späterern Zeitpunkt noch kommen, aber soweit ist die Prüfung hier noch nicht, daher wird das auch nicht als Fehler ausgewiesen.
Gruß Daniel
Anzeige
AW: End With one With
18.05.2021 18:02:28
Christian
Hallo Daniel,
auch dir vielen lieben Dank fürs Erklären
Gruß
Christian
AW: End With one With
18.05.2021 16:44:37
Eisi
Hallo Christian,
den Fehler würde ich jetzt hier sehen:
.Apply
End With
'Zeile der Markierung in Spalte l suchen
- Entweder ist das End with zu viel, weil sich auch der untere Teil des Codes auf **** With .Sort **** (weiter oben) bezieht, oder
- darunter fehlt ein neuer With-Bezug.
Nachdem ich kein Profi bin, kann ich leider nicht mehr dazu sagen, hoffentlich hilft es.
VG
Eisi :-)
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige