Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Code - Daten leer schließen
#11
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)
Antworten Top
#12
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
Antworten Top
#13
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
Antworten Top
#14
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
Antworten Top
#15
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
Antworten Top
#16
Hallöchen,

also, mal zusammengefasst noch etwas konstruktive Kritik Smile

- 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 Smile )
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#17
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
Antworten Top
#18
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 Blush, 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  Blush
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste