Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1012to1016
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

While mit Fehlerabfrage

While mit Fehlerabfrage
10.10.2008 16:57:00
Peter
Hallöchen zusammen,
forsche nun wieder stundenlang ohne echtes Ergebnis.
Ich möchte eigentlich nur einen Fehler abfangen, falls ein bestimmtes Tabellenblatt nicht vorhanden ist.
Vorweg: Alle Variablen sind richtig definiert.
Folgenden Code verwende ich:
While Datei <> "" 'Datei-Schleife...
Set wkbWork = appExcel.Workbooks.Open(Pfad & "\" & Datei)
Set shtWork = wkbWork.Worksheets("LQ_YP482780-5")
...
wend~f~
Nun der Versuch mit Fehlerabfrage:
~f~While Datei <> "" 'Datei-Schleife...
Set wkbWork = appExcel.Workbooks.Open(Pfad & "\" & Datei)
For Each Sheet In wkbWork
If Sheet.Name = "LQ_YP482780-5" Then
Exit For
Else
wkbWork.Close SaveChanges:=False
Set wkbWork = Nothing
Datei = Dir ' Nächste Datei
End If
Set shtWork = wkbWork.Worksheets("LQ_YP482780-5")
...
Wend
Nun habe ich aber das Problem, dass in dem zweiten Beispiel grundsätzlich die Fehlermeldung wend ohne while kommt!
Woran liegt das?
Hoffentlich kann mir jemand helfen.
Gruß
Peter

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: While mit Fehlerabfrage
10.10.2008 17:18:00
Peter
Hallo Peter,
deinem For Each Sheet In wkbWork fehlt das Next Sheet.
Die Fehlermeldung weiß es nicht besser und bemeckert den While.
Gruß Peter
AW: While mit Fehlerabfrage
10.10.2008 17:37:25
Peter
Hallo Peter,
fange ich das nicht mit dem exit for ab?
Hab jetz mal versucht an verschiedenen Stellen das Next Sheet einzubringen, aber es gibt nun andere Fehlermeldungen. Wo soll das reingesetzt werden?
Beispiel:
Habe es unter end if gesetzt (weil da ja eigentlich die For Schleife erst zu Ende ist), dann kommt aber Laufzeitfehler 438
Objekt unterstützt diese Eigenschaft oder Methode nicht!
Gruß
Peter
AW: While mit Fehlerabfrage
10.10.2008 17:43:40
Peter
Hallo Peter,
mit dem nachfolgenden Code erhalte ich zumindest keinen Compile-Fehler
While Datei "" 'Datei-Schleife...
Set wkbWork = appExcel.Workbooks.Open(Pfad & "\" & Datei)
For Each Sheet In wkbWork
If Sheet.Name = "LQ_YP482780-5" Then
Exit For
Else
wkbWork.Close SaveChanges:=False
Set wkbWork = Nothing
Datei = Dir ' Nächste Datei
End If
Next Sheet
Set shtWork = wkbWork.Worksheets("LQ_YP482780-5")
Wend
Gruß Peter
Anzeige
AW: While mit Fehlerabfrage
10.10.2008 17:52:00
Peter
Hallöchen,
heißen hier alle Peter? :-)
Stimmt schon, ein Compile-Fehler kommt auch nicht, aber halt der Laufzeitfehler.Makro startet und wenn er an diesen Punkt (Next Sheet) kommt, erscheint der Fehler.
Weiß echt nicht mehr weiter.
Gruß
AW: While mit Fehlerabfrage
10.10.2008 18:40:04
Jürgen
Hallo Peter,
Deine Objektvariable Sheet zu nennen ist mutig, das Sammelobjekt beim Start der For-Each-Schleife nicht zu nennen tödlich (bei mir kommt bereits in dieser Zeile ein Runtime Error).
So sollte es gehen:
Dim Blatt as worksheet
While Datei "" 'Datei-Schleife...
Set wkbWork = appExcel.Workbooks.Open(Pfad & "\" & Datei)
For Each Blatt In wkbWork.Sheets
If Blatt.Name = "LQ_YP482780-5" Then
Set shtWork = Blatt
Exit For
Else
wkbWork.Close SaveChanges:=False
Set wkbWork = Nothing
Set shtwork = nothing
Datei = Dir ' Nächste Datei
End If
Next Blatt
If not shtWork is nothing then
'hier der weitere Code
end if
Wend
Die Zeile "Set shtWork = wkbWork.Worksheets("LQ_YP482780-5")" darf übrigens nicht hinter der Schleife stehen, denn nach der Schleife weißt Du nicht, ob sie komplett durchlaufen oder mit exit for abgebrochen wurde - oder anders, ob das Blatt gefunden wurde oder nicht. Falls nicht, würde die Zeile einen Fehler verursachen.
Gruß, Jürgen
Anzeige
AW: While mit Fehlerabfrage
10.10.2008 18:59:33
Peter
Hallo Jürgen,
vielen Dank für Deinen Hinweis.
Hab den Code jetzt einfach mal übernommen. Nun habe ich aber das Problem, dass er das "Next Blatt" total ignoriert, weil ja schon davor steht, dass er die Datei schließen soll.
Der vorherige Code war ja auch nur ein Versuch mit Sheet.
Eigentlich ist shtWork mein Excel.Worksheet. Aber das kann ich ja wieder umdefinieren.
Aber vielleicht trotzdem ne Idee?
Gruß
Peter
AW: While mit Fehlerabfrage
10.10.2008 22:08:04
Jürgen
Hallo Peter,
stimmt, der Code war noch nicht wirklich durchdacht. Ein neuer (allerdings ungetesteter) Anlauf:
Dim Blatt as worksheet
While Datei "" 'Datei-Schleife...
Set shtwork = nothing
Set wkbWork = appExcel.Workbooks.Open(Pfad & "\" & Datei)
For Each Blatt In wkbWork.Sheets
If Blatt.Name = "LQ_YP482780-5" Then
Set shtWork = Blatt
Exit For
End If
Next Blatt
If not shtWork is nothing then
'hier der weitere Code
Else
wkbWork.Close SaveChanges:=False
Set wkbWork = Nothing
end if
Datei = Dir ' Nächste Datei
Wend
Anzeige
AW: While mit Fehlerabfrage
11.10.2008 09:27:28
Peter
Hallo Jürgen,
vielen Dank für Deine Antwort. Kann es leider erst am Montag ausprobieren.
Hört sich aber logisch und vernünftig an.
Hatte zwar auch schon probiert, das schließen der Datei an einen anderen Ort zu verfrachten, aber hab nicht den richtigen ort gefunden, da der Code ca. 1800 Zeilen umfasst.
Wie gesagt, vielen Dank nochmal. Rückmeldung wird noch gegeben! Schließlich lebt das Forum ja davon! :-)
Gruß und schönes WE
Peter
AW: While mit Fehlerabfrage
13.10.2008 10:37:29
Peter
Hallo Jürgen,
vielen Dank für Deine Hilfe.
Funktioniert tadellos. Musste die Endbedingung nur doppelt eintragen, da nochmal ne Wend-Schleife kommt.
Gruß
Peter R
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige