Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
na ja, glaub ich nicht. j ist numerisch und kein Text. Das wird also nicht der Inhalt der Variable j sein. Vielleicht fehlt auch nur Sheet(3)
Könnte sein, dass in der Fehlermeldung der entsprechende Hinweis steckt.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 28.08.2022
Version(en): 365
Hi,
wieso beantwortest du eigentlich Andrés Frage trotz Nachfrage nicht? Ich finde das extrem unhöflich!
Für was brauchst du überhaupt die Zeilen nach dem Next? Wenn die Schleife abgearbeitet ist, sollte doch alles erledigt sein...
Gruß, Helmut
Win10 - Office365 / MacOS - Office365
Registriert seit: 28.09.2022
Version(en): 2016
Hallo Andre 'und Hallo Helmut,
zu erst einmal, es war nicht meine Absicht, die Frage nicht zu beantworten und damit unhöflich zu erscheinen. Ich dachte das ich die Frage mit der Antwort die Datei enthält dann nur noch eine Zeile beantwortet habe. Bitte entschuldigt hier meine Unwissenheit was mit j gemeint war. Die erste Zeile besteht sowohl aus Text als auch aus Zahl, es ist sowas wie B1 Name C1 Geburtsdatum D1 Gehalt usw. E1 300
Wie kann ich das verstehen, es fehlt dann vielleicht nur noch ein Sheet(3) wie gesagt bin wirklich erst im Basis wissen von VBA. Ich brauche das Next, weil ich danach wieder in die Ursprungsdatei zurückkehre der User die Meldung bekommt, dass Dateien erstellt wurden und sich automatisch nachdem die zwischen Ablage wieder geleert wurde die Datei schließt.
Ich habe euch mal den Ursprungs Code eingefügt vielleicht hilft das ein wenig weiter.
Workbooks.Open "......Grunddatei_" & Format(Now, "DD.MM.YYYY") & ".xlsx" Sheets.Add , Sheets(Sheets.Count) Columns("L:L").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range("L2").Select ActiveCell.FormulaR1C1 = "=LÄNGE(K2)" Range("L2").Select Range("L2").AutoFill Range("L2:L" & Cells(Rows.Count, 1).End(xlUp).Row) Columns("M:M").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range("M2").Select Sheets(1).Rows(1).Copy Sheets(2).Cells(1, 1) For j = 0 To Sheets(1).UsedRange.Rows.Count \ 59999 + 1 Sheets(1).Cells(j * 59999 + 2, 1).Resize(59999, Sheets(1).UsedRange.Columns.Count).Copy Sheets(2).Cells(2, 1) Sheets(2).Copy With ActiveWorkbook .SaveAs "......eins" & Format(j + 1, "00") & ".xls", 56 .Close End With Next
Rows("2:60000").Select Selection.Delete Shift:=xlUp
Sheets(1).Rows(1).Copy Sheets(2).Cells(1, 1) For j = 0 To Sheets(1).UsedRange.Rows.Count \ 59999 + 1 Sheets(1).Cells(j * 59999 + 2, 1).Resize(59999, Sheets(1).UsedRange.Columns.Count).Copy Sheets(3).Cells(2, 1) Sheets(2).Copy With ActiveWorkbook .SaveAs "...eins" & Format(j + 1, "00") & ".xls", 56
MsgBox ("Datei ist erstellt") .Close End With Next 'Ein Fenster erscheint mit der Nachricht "Datei ist erstellt" MsgBox ("Datei ist erstellt") 'Die Datei wird geschlossen Workbooks("Markos_ausführen.xlsb").Close Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
Danke für euer Feedback BG Scrt2016
Registriert seit: 28.08.2022
Version(en): 365
Hi,
bitte verwende zum Einfügen von Code die Code-Tags. Das macht deinen Beitrag besser lesbar.
Mir ist immer noch nicht klar, wieso du nach dem Next noch weiter kopieren willst. Zu dem Zeitpunkt bist du doch schon durch alle Zeilen durch, oder nicht?
Auf alle Fälle kopierst du dann nochmals die Zeile 1 von Blatt 1 auf Blatt 2. Danach kopierst du nochmals alles in 60.000er Blöcken, aber diesmal auf Blatt 3. Kopierst dann aber Blatt 2 in eine neue Datei und speicherst und schließt diese und gibst dann deine Meldung aus. Das kopieren auf Blatt 3 ist vermutlich das, was dich aus der Bahn wirft. Falls es keine 3 Blätter in der Datei gibt, kommt es zu einem Fahler. Mal ganz davon abgesehen, dass es sinnlos ist, auf Blatt 3 zu kopieren und dann Blatt 2 zu speichern.
Gruß, Helmut
Win10 - Office365 / MacOS - Office365
Registriert seit: 28.09.2022
Version(en): 2016
Hallo Helmut,
vielen dank für die schnelle Antwort. Wo find ich den die Code-Tags? Also meinst du , es ist sinnvoller die Code so aufzubauen?
Sheets(1).Rows(1).Copy Sheets(2).Cells(1, 1) For j = 0 To Sheets(1).UsedRange.Rows.Count \ 59999 + 1 Sheets(1).Cells(j * 59999 + 2, 1).Resize(59999, Sheets(1).UsedRange.Columns.Count).Copy Sheets(2).Cells(2, 1) Sheets(2).Copy With ActiveWorkbook .SaveAs ".....einspielen" & Format(j + 1, "00") & ".xls", 56 .Close End With Next
Rows("2:60000").Select Selection.Delete Shift:=xlUp
MsgBox ("Datei ist erstellt") .Close End With Next
'Ein Fenster erscheint mit der Nachricht "Datei ist erstellt" MsgBox ("Datei ist erstellt") 'Die Datei wird geschlossen Workbooks("Makros.xlsb").Close Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
BG
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, also, mal zusammengefasst noch etwas konstruktive Kritik  - wenn Du eine Fehlermeldung bekommst solltest Du diese auch posten - Du solltest auch genau angeben, in welcher Zeile der Fehler erscheint --> sheets(1).Cell..... hast Du 2x wenn Du eine Meldung erhältst, solltest Du dir einerseits die Meldung und andererseits die Zeile genau anschauen. Wenn Du mit der Meldung nix anfangen kannst, dann kannst Du aber die Zeile durchgehen und die einzelnen Bestandteile prüfen. Da kann man vorne in der Codezeile anfangen und Step by Step nach hinten, oder bei Klammerausdrücken auch von innen nach außen, durchgehen. Dazu kannst Du z.B. unten unter dem Codefenster im Überwachungsfenster eine Überwachung einfügen oder schaust, was Dir das Lokalfenster ausgibt. ******************************* Code-Tags findest Du über der Eingabebox. Gehe langsam mit der Maus über die Symbole, verweile kurz auf einem Symbol und da erscheinen entsprechende Tipps zur Funktion. (fange rechts an  )
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 28.08.2022
Version(en): 365
Hi, die Code-Tags findest du hier:
Dein Code wir so nicht laufen. Da ist z.B. noch ein Next zu viel... Außerdem brauchst du das Löschen wahrscheinlich nicht (und wenn, dann wäre es unsauber, da ohne Blatt-Angabe) und mir würde eine Msgbox am Ende reichen und nicht nach jeder Datei. Code: Sheets(1).Rows(1).Copy Sheets(2).Cells(1, 1) For j = 0 To Sheets(1).UsedRange.Rows.Count \ 59999 + 1 Sheets(1).Cells(j * 59999 + 2, 1).Resize(59999, Sheets(1).UsedRange.Columns.Count).Copy Sheets(2).Cells(2, 1) Sheets(2).Copy With ActiveWorkbook .SaveAs ".....einspielen" & Format(j + 1, "00") & ".xls", 56 .Close End With Next MsgBox ("Datei ist erstellt") 'Die Datei wird geschlossen Workbooks("Makros.xlsb").Close Application.ScreenUpdating = True Application.DisplayAlerts = True
Gruß, Helmut
Win10 - Office365 / MacOS - Office365
Registriert seit: 28.09.2022
Version(en): 2016
Hallo Helmut & Hallo Andre´, vielen Dank für die konstruktive Kritik und die entsprechenden Lösungsansätze dazu. Dein Lösungsansatz Helmut hat perfekt funktioniert, Ich bin begeistert. Es läuft endlich durch  , ohne Fehlermeldung. Bei der nächsten Herausforderung werde ich auf eure Kritik eingehen und mich genauer ausdrücken. Vielen dank euch zweien. Ihr habt mir sehr geholfen! Schönes Wochenende euch beiden BG
|