Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
312to316
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
312to316
312to316
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

For each - Next

For each - Next
25.09.2003 12:22:08
Torsten K.
Hallo beisammen,

als VBA-Anfänger brauche ich mal die Hilfe des Profis:
In einer Datei (Quelldate) befinden sich 17 Worksheets ("1" - "17"), die alle den gleichen Aufbau haben. Ist der Wert der Zelle "F3" ungleich 0, soll eine bereits vorhandene Datei (Zieldatei) geöffnet und unter dem Namen aus "G1" des WS gespeichert werden (DateiNeu). Das soll für alle 17 WS so durchlaufen werden.

Private Sub cmb_COPA_Click()
Dim ws
Dim Arr, i%
Dim wkbQuell As Workbook 'Quelldatei
Dim wkbZiel As Workbook  'Datei: Upload_blanco
Dim wkbNeu As Workbook   'neue Datei nach Speichern der wbkZiel unter neuem Namen
Dim fi As String
Set wkbQuell = ThisWorkbook
fi = ThisWorkbook.Range("G1")
If GetPassword = True Then
Application.ScreenUpdating = False
Arr = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", _
"10", "11", "11", "12", "13", "14", "15", "16", "17")
For i = LBound(Arr, 1) To UBound(Arr, 1)
Next i
For Each ws In Arr
Worksheets(ws).Activate
If ws.Range("F3") <> 0 Then
Workbooks.Open Filename:= _
"Y:\Budget 2004\Turnover\COPA_Preparation\Upload_Test.xls", UpdateLinks:=3
ActiveWorkbook.SaveAs Filename:= _
"Y:\Budget 2004\Turnover\COPA_Upload\" & fi, FileFormat:=xlNormal, Password:="", _
WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
Next ws
Else
MsgBox "Password ist falsch"
End If
Application.ScreenUpdating = True
End Sub

Leider erhalte ich an der Stelle "Next ws" die Meldung "Next ohne For" - ich verstehe's nicht, da "For each ws.." doch definiert ist?
Kann mir jemand helfen. Vielen Dank im voraus.

Gruß
Torsten

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For each - Next
25.09.2003 12:30:05
GerdW
Wozu soll das gut sein?

For i = LBound(Arr, 1) To UBound(Arr, 1)
Next i

Gerd
AW: For each - Next
25.09.2003 12:30:41
PeterW
Hallo Torsten,

die Meldung kommt, da der Code noch kein End If gefunden hat. Stell das mal so um:

For Each ws In Arr
Worksheets(ws).Activate
If ws.Range("F3") <> 0 Then
Workbooks.Open Filename:= _
"Y:\Budget 2004\Turnover\COPA_Preparation\Upload_Test.xls", UpdateLinks:=3
ActiveWorkbook.SaveAs Filename:= _
"Y:\Budget 2004\Turnover\COPA_Upload\" & fi, FileFormat:=xlNormal, Password:="", _
WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False

Else
MsgBox "Password ist falsch"
End If

Next ws

Gruß
Peter
Anzeige
AW: For each - Next
25.09.2003 12:34:55
xXx
Hallo,
das geht so nicht.
Was soll die For i=Schleife?

For ws = LBound(Arr, 1) To UBound(Arr, 1)
Worksheets(ws).Activate
If ws.Range("F3") <> 0 Then
Workbooks.Open Filename:= _
"Y:\Budget 2004\Turnover\COPA_Preparation\Upload_Test.xls", UpdateLinks:=3
ActiveWorkbook.SaveAs Filename:= _
"Y:\Budget 2004\Turnover\COPA_Upload\" & fi, FileFormat:=xlNormal, Password:="", _
WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
Next ws

Gruß aus'm Pott
Udo
vor Next ws gehört noch ein End If oT
25.09.2003 12:37:25
xXx
AW: For each - Next
25.09.2003 13:31:43
Torsten K.
Hallo zusammen,

vielen Dank für Eure Hinweise. Ich habe ein "End If" vor das "Next ws" gestellt. Leider bleibt Excle jetzt woanders hängen, und zwar bei "fi=ThisWorkbook.Range("G3")" (=>Objekt unterstützt Eigenschaft oder Methode nicht):

Dim fi as String
fi = ThisWorkbook.Range("G1")

If GetPassword = True Then

Application.ScreenUpdating = False

Arr = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", _
"10", "11", "11", "12", "13", "14", "15", "16", "17")
'For i = LBound(Arr, 1) To UBound(Arr, 1)
'Next i

For Each ws In Arr
Worksheets(ws).Activate
If ws.Range("F3") <> 0 Then
Workbooks.Open Filename:= _
"Y:\Budget 2004\Turnover\COPA_Preparation\Upload_Test.xls", UpdateLinks:=3
ActiveWorkbook.SaveAs Filename:= _
"Y:\Budget 2004\Turnover\COPA_Upload\" & fi, FileFormat:=xlNormal, Password:="", _
WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
End If
Next ws

Könnt Ihr mir hier auch weiterhelfen? Vielen Dank.

Gruß
Torsten
Anzeige
AW: For each - Next
25.09.2003 13:34:46
PeterW
Hallo Torsten,

fi = ThisWorkbook.Sheets(WelchesBlatt").Range("G1")

Gruß
Peter
AW: For each - Next
25.09.2003 13:52:31
Torsten K.
Hallo Peter,

nett, daß Du Dich meinem Problem annimmst.
Wie muß ich Deinen Code denn anpassen, wenn ich berücksichtige, daß Sheets doch 17 verschiedene WS sind, die nacheinander abgearbeitet werden sollen (wie im Array angegeben)?

Gruß
Torsten
AW: For each - Next
25.09.2003 13:57:44
PeterW
Hallo Torsten,

in der For Each Schleife machst du das doch richtig mit ws.Range("F3")...

Würde dir gerne helfen aber kann nicht nachvollziehen, was du mit fi überhaupt vor hast? Die Variable taucht im Code nicht wieder auf.

Gruß
Peter
Anzeige
AW: For each - Next
25.09.2003 14:59:26
Torsten K.
Hallo Peter,

ich hab' ein bißchen weiterprobiert und nunmehr folgenden Code erstellt:

Private Sub cmb_COPA_Click()
Dim ws
Dim Arr, i%
Dim wkbQuell As Workbook 'Quelldatei
Dim wkbZiel As Workbook  'Datei: Upload_blanco
Dim wkbNeu As Workbook   'neue Datei nach Speichern der wbkZiel unter neuem Namen
Dim fi As String
Set wkbQuell = ThisWorkbook
If GetPassword = True Then
Arr = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", _
"10", "11", "11", "12", "13", "14", "15", "16", "17")
For Each ws In Arr
Worksheets(ws).Activate
If ThisWorkbook.Sheets(ws).Range("F3") <> 0 Then
fi = ThisWorkbook.Sheets(ws).Range("G1")
Workbooks.Open Filename:= _
"Y:\Budget 2004\Turnover\COPA_Preparation\Upload_Test.xls", UpdateLinks:=3
ActiveWorkbook.SaveAs Filename:= _
"Y:\Budget 2004\Turnover\COPA_Upload\" & fi, FileFormat:=xlNormal, Password:="", _
WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
'=> Code für: neu erstellte Datei schließen
Else
End If
Next ws
Else
MsgBox "Password ist falsch"
End If
End Sub

Im ersten Durchgang läuft der Code auch richtig: Es wird eine neue Datei erstellt, die unter dem Namen aus der Zelle G1 des WS aus Quelldatei gespeichert wird. Den 2. Durchgang bricht Excel mit Fehlermeldung ("Index außerhalb des gültigen Bereichs") ab und markiert die Stelle "Worksheets(ws).Activate". Weißt Du Rat?
Wie muß der Code aussehen, wenn ich die gerade erstellte Datei schließen möchte, bevor der nächste Durchgang beginnt? Mit ThisWorkbook.Close oder ActiveWorkbook.Close schließt mir Excel die Quelldatei und bricht damit natürlich mittendrin ab.
Vielen Dank für Deine Geduld und Hilfe.

Gruß
Torsten
Anzeige
AW: For each - Next
25.09.2003 16:11:03
PeterW
Hallo Torsten,

das neu erstellte Datei ist das ActiveWorkbook. Also nach dem SaveAs AvtiveWorkbook.Close

Allerdings verstehe ich nicht, dass das Makro einmal komplett durchlaufen soll. Spätestens beim 2. Versuch die Mappe mit dem Namen aus Worksheet("11") zu speichern sollte es eine Warnmeldung geben.

Gruß
Peter
AW: For each - Next
25.09.2003 16:51:48
Torsten K.
Hallo Peter,

sorry, ich hab' mich wohl mißverständlich ausgedrückt. Das Makro läuft nicht komplett durch, sondern kommt mit der Fehlermeldung, nachdem die 1. Datei mit dem Namen aus der Zelle "G1" des 1. WS neu angelegt wurde (Es sollen ja u.U. 17 Datein neu angelegt werden). Was fehlt dem Code denn noch oder wo mach ich was falsch, das das makro abbricht und nicht komplett durchläuft?

Gruß
Torsten
P.S. Ich bin gleich nicht mehr im Büro. Kann ich Dich morgen im Forum direkt anpsprechen oder können wir unter dem aktuellen Thread weiter kommunizieren? Gib mir bitte einen Tipp.
Anzeige
AW: For each - Next
25.09.2003 17:08:44
PeterW
Hallo Torsten,

es ist besser im Thread zu bleiben. Es ist allerdings zu vermuten, dass dies ein ziemlich umfangreicher wird, bis alle Details geklärt sind. Mein Vorschlag: mail mich direkt an unter peter.wunderlich@gmx.net und die Lösung stellen wir ins Forum, wenn wir sie gefunden haben.

Gruß
Peter
fürs Archiv
30.09.2003 00:24:07
PeterW
Um diesen Thread zu einem Ende zu bringen:

Das Problem ist aus der Welt aber fürs Archiv uninteressant, da es sich um eine seeehr spezielle Anwendung handelt. Es gab Detailprobleme mit geschützten Blättern, die gelöscht werden sollten, mit Sortierfunktionen und dem grundsätzlichen Schleifenaufbau.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige