Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Block if without end if - wo?

Forumthread: Block if without end if - wo?

Block if without end if - wo?
10.11.2020 10:51:26
Nils
Hey zusammen,
ich hab leider den typischen "block if without end if" Fehler aber ich kann einfach nicht erkennen, wo das end if hingehört? Kann hier jemand einem Anfänger mal auf die Sprünge helfen? vielen Dank vorab!
strDateiname4m = Dir$(strPath4m & "\*.xlsx")
Do While strDateiname4m ""
If strDateiname4m ThisWorkbook.Name Then
Set wkbBook = Workbooks.Open(strPath4m & strDateiname4m)
With ActiveWorkbook.Worksheets("RawDataProjectDays")
lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = lastrow To 2 Step -1
If ActiveWorkbook.Worksheets("RawDataProjectDays").Cells(i, 5) = 2020 Then
.Rows(i).Delete
End If
Next
End With
With ActiveWorkbook.Worksheets("RawDataConsSw")
lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = lastrow To 2 Step -1
If ActiveWorkbook.Worksheets("RawDataConsSw").Cells(i, 5) = 2020 Then
.Rows(i).Delete
End If
Next
End With
strDateiname = Dir$(strPath & "\*.xlsx")
Do While strDateiname ""
If strDateiname ThisWorkbook.Name Then
Set wkbBook = Workbooks.Open(strPath & strDateiname)
With ActiveWorkbook.Worksheets("RawData")
lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = lastrow To 2 Step -1
If ActiveWorkbook.Worksheets("RawData").Cells(i, 5) = 2020 Then
.Rows(i).Delete
End If
Next
End With
wkbBook.Close True ' Oder false, wenn nicht gespeichert werden soll
Set wkbBook = Nothing
End If
strDateiname = Dir$()
Loop
Application.ScreenUpdating = True
End Sub
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Block if without end if - wo?
10.11.2020 11:04:37
Werner
Hallo,
würdest du bei If-End If / Do-Loop / With-End With
mit Einrückungen im Code arbeiten, dann würdest du auch sehen, wo was fehlt.
Public Sub aaa()
strDateiname4m = Dir$(strPath4m & "\*.xlsx")
Do While strDateiname4m  ""
If strDateiname4m  ThisWorkbook.Name Then
Set wkbBook = Workbooks.Open(strPath4m & strDateiname4m)
With ActiveWorkbook.Worksheets("RawDataProjectDays")
lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = lastrow To 2 Step -1
If ActiveWorkbook.Worksheets("RawDataProjectDays").Cells(i, 5) = 2020 Then
.Rows(i).Delete
End If
Next
End With
With ActiveWorkbook.Worksheets("RawDataConsSw")
lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = lastrow To 2 Step -1
If ActiveWorkbook.Worksheets("RawDataConsSw").Cells(i, 5) = 2020 Then
.Rows(i).Delete
End If
Next
End With
strDateiname = Dir$(strPath & "\*.xlsx")
Do While strDateiname  ""
If strDateiname  ThisWorkbook.Name Then
Set wkbBook = Workbooks.Open(strPath & strDateiname)
With ActiveWorkbook.Worksheets("RawData")
lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = lastrow To 2 Step -1
If ActiveWorkbook.Worksheets("RawData").Cells(i, 5) = 2020 Then
.Rows(i).Delete
End If
Next
End With
wkbBook.Close True ' Oder false, wenn nicht gespeichert werden soll
Set wkbBook = Nothing
End If
strDateiname = Dir$()
Loop
End Sub

Nach dem Loop am Schluß fehlt ein End If und danach noch ein Loop
Gruß Werner
Anzeige
AW: Block if without end if - wo?
10.11.2020 11:07:45
JoWE
Hallo Nils,
das kommt immer dann vor wenn ohne Einrücken unstrukturiert drauflos programmiert wird.
Das würde dann u.U. so aussehen können:
Sub Makroname_hat_gefehlt()
'.............. da ist bestimmt noch was gestanden?
strDateiname4m = Dir$(strPath4m & "\*.xlsx")
Do While strDateiname4m  ""
If strDateiname4m  ThisWorkbook.Name Then
Set wkbBook = Workbooks.Open(strPath4m & strDateiname4m)
With ActiveWorkbook.Worksheets("RawDataProjectDays")
lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = lastrow To 2 Step -1
If ActiveWorkbook.Worksheets("RawDataProjectDays").Cells(i, 5) = 2020 Then
.Rows(i).Delete
End If
Next
End With
With ActiveWorkbook.Worksheets("RawDataConsSw")
lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = lastrow To 2 Step -1
If ActiveWorkbook.Worksheets("RawDataConsSw").Cells(i, 5) = 2020 Then
.Rows(i).Delete
End If
Next
End With
End If
strDateiname = Dir$(strPath & "\*.xlsx")
Do While strDateiname  ""
If strDateiname  ThisWorkbook.Name Then
Set wkbBook = Workbooks.Open(strPath & strDateiname)
With ActiveWorkbook.Worksheets("RawData")
lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = lastrow To 2 Step -1
If ActiveWorkbook.Worksheets("RawData").Cells(i, 5) = 2020 Then
.Rows(i).Delete
End If
Next
End With
wkbBook.Close True ' Oder false, wenn nicht gespeichert werden soll
Set wkbBook = Nothing
End If
strDateiname = Dir$()
Loop
Application.ScreenUpdating = True
Loop
End Sub
Gruß
Jochen
Anzeige
Zusatz
10.11.2020 11:23:24
Nepumuk
Hallo,
das kann nicht funktionieren, denn geschachtelte Dir-Funktionen laufen falsch.
Gruß
Nepumuk
AW: ...habe lediglich die Strukturierung zeigen wo
10.11.2020 11:34:15
JoWE
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

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