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

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

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

271 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige