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

For Next Schleife umschreiben

For Next Schleife umschreiben
Alex
Hallo zusammen,
ich habe hier eine ForNext-Schleife, die ich so nicht lassen kann.
Wenn die Bedingung nicht erfüllt ist soll ein Parameter gesetzt werden.
Wenn die Bedingung erfüllt ist , wird eine Abfrage gemacht, ob die Datei überschrieben werden soll. Wird diese Abfrage nun mit NEIN beantwortet, wird am Ende der For NEXT-Schleife der Parameter trotzdem auf True gesetzt.
Wie kann ich das umgehen bzw. wie verpacke ich die ForNextSchleife in eine If Then anweisung..?
(hoffentlich versteht mich hier einer...)

For Each oFILE In oFLDR.Files
'/* Wenn Datei bereits existiert
If oFILE = strPathT & strFileT Then
'/* Wenn Datei geöffnet, schließen
If IsWorkbookOpen(strFileT) Then
Workbooks(strFileT).Close
End If
'/* Fragen, ob Datei überschrieben werden soll
strMsg = "Achtung, Datei  existiert bereits" & vbCrLf &  _
vbCrLf _
& "Soll die Datei überschrieben werden?"
If MsgBox(strMsg, vbYesNo, "Dateiproblem!") = 6 Then
bolCopy = True
End If
Else
bolCopy = True
End If
Next oFILE
bolCopy = True

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

Betreff
Benutzer
Anzeige
AW: For Next Schleife umschreiben
06.05.2010 13:15:30
Firmus
Hi Alex,
wo setzt Du den bolCopy auf False?
Ich sehe nur, dass es auf True gesetzt wird.
Gruss
Firmus
AW: For Next Schleife umschreiben
06.05.2010 13:22:28
Alex
Hallo Firmus,
den setze ich genau davor auf False.
Danach soll die Prüfung passieren, ob die Datei vohanden ist bzw. ob sie überschrieben werden soll...
hier noch mal etwas mehr Code

'/* Prüfen ob Datei bereits existiert
bolCopy = False
Dim oFS      As Object
Dim oFLDR    As Object
Dim oFILE    As Object
Set oFS = CreateObject("scripting.filesystemobject")
Set oFLDR = oFS.getfolder(strPathT)
For Each oFILE In oFLDR.Files
'/* Wenn Datei bereits existiert
If oFILE = strPathT & strFileT Then
'/* Wenn Datei geöffnet, schließen
If IsWorkbookOpen(strFileT) Then
Workbooks(strFileT).Close
End If
'/* Fragen, ob Datei überschrieben werden soll
strMsg = "Achtung, Datei  existiert bereits" & vbCrLf &  _
vbCrLf _
& "Soll die Datei überschrieben werden?"
If MsgBox(strMsg, vbYesNo, "Dateiproblem!") = 6 Then
bolCopy = True
End If
Else
bolCopy = True
End If
Next oFILE
bolCopy = True
If bolCopy Then
'/* hier beginnt dann der Kopiervorgang..!!!

Anzeige
AW: For Next Schleife umschreiben
06.05.2010 13:37:51
IngGi
Hallo Alex,
wenn die Abfrage mit Nein beantwortet wird, dann wird die Variable bolCopy nicht auf True gesetzt. Die Variable steht vielmehr vom vorhergehenden Schleifendurchlauf her noch auf True. Die Variable muss am Anfang jedes Schleifendurchlaufes auf False gesetzt werden. Die Codezeile bolCopy = False gehört also nicht vor die Schleife, sondern als erste Anweisung in die Schleife.
Gruß Ingolf
AW: For Next Schleife umschreiben
06.05.2010 13:41:16
Chris
Servus,
dein Problem ist,...
Next oFILE
bolCopy = True ' warum ?
If bolCopy Then
, dass du bolCopy nach der Schleife auf True setzt und bolCopy somit immer True ist, also if bolCopy auch immer ausgeführt wird.
Gruß
Chris
Anzeige
AW: For Next Schleife umschreiben
06.05.2010 13:50:34
Alex
Hallo Chris,
Das war erst mal ein "Notbehelf", damit es überhaupt weitergeht.
Wenn keine Datei in dem Verzeichnis steht, geht das Macro direkt nach:
Next oFILE
weiter.
..und hier ist mein Problem.! Dann ist der Wert "bolCopy" nähmlich immer auf False und nix passiert in meinem Macro.
Wenn sich Dateien in dem Verzeichnis befinden, werden die If Then Schleifen abgearbeitet und das auch völlig korrekt.
Aber dann bei der Beantwortung der Frage " Datei überschreiben" wird durch meinen "Notbehelf" das eigentlich richtige Ergebnis "bolCopy = False" überschrieben.
Ich denke, dass ich hier mit dieser ForNext Geschichte nicht weiterkomme. Deshalb die Frage, wie man das in If Then umschreiben kann...
Anzeige
AW: For Next Schleife umschreiben
06.05.2010 14:48:52
Chris
Servus Alex,
was willst du denn eigentlich erreichen? Die MsgBox fragt nach überschreiben, bei ja dann bolCopy = True, bei nein dann was ? Auch True? Warum dann die Abfrage ?
Nach meinem Verständnis sollte bei nein auch nichts passieren, oder die Struktur deines makros ist überhaupt falsch aufgebaut:
Gruß
Chris
AW: For Next Schleife umschreiben
06.05.2010 15:15:52
Alex
Hallo Chris,
Das ist richtig soweit.
Wenn MsgBox=Ja dann bolCopy=True. Dann wird weiter unten der Kopiervorgang abgearbeitet.
Wenn MsgBox=Nein dann bleibt der zuvor gesetzte Wert bolCopy=False. Dann würde, wenn ich den "Notbehlef" nicht drin hätte, nichts weiter passieren, das Macro wäre zu Ende und Fertig.
Das wäre auch so ganz toll.
ABER:
Nehme ich den "Notbehelf: bolCopy=True" wieder raus (das ist die Zeile nach NEXT oFILE), passiert nur leider nichts mehr, wenn sich gar keine Datei in dem Verzeichnis befindet. Aber dann will ich ja trotzdem, dass die Excel-Datei erstellt wird.
In solch einem Fall ist die ForNext gleich zu Ende und ....jetzt hab ich eine Idee...
...Klappt..!!
ich habe das einfach umgedreht.
Zu Beginn setze ich den Wert "bolCopy=True"
Mache ich die Abfrage in der MsgBox auf NEIN und setzte in dem Fall "bolCopy=False".
...
hab echt'n Brett vorm Kopf gehabt..!!
Danke trotzdem..!!
Anzeige
AW: zu owT
07.05.2010 08:49:54
Chris
.

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige