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.

Blatt mehrfach kopieren und fortlaufend
#11
(06.05.2023, 07:18)RPP63 schrieb: Thema Fehlerbehandlung:
• DIZA verwendet keine // OK war im ersten Schuß nicht berücksichtigt jetzt im folgenden... quick&dirty aber funktional und kurz ohne Abbruch = Zielführend  21
• Chat GPT nutzt On Error Resume Next // hast du in deinem "Programm" auch verwendet Smile
• Bing nutzt es ebenfalls, die schreiben wohl voneinander ab …  19 
Beide werten einen evtl. Fehler aus, brechen aber als Folge das Makro rigoros ab, warum auch immer.

Code:
Option Explicit
Sub Blcopies()
Dim Menge As Long, C As Long, nn As String

Menge = InputBox("Wieviele Blattkopien sollen erstellt werden ?")
Application.DisplayAlerts = False
For C = 1 To Menge
   nn = Format(C, "000")
      Sheets("TEMPLATE").Copy After:=Sheets(Sheets.Count)
      On Error GoTo istda
      ActiveSheet.Name = nn
      GoTo weiter
istda:
On Error GoTo -1
ActiveSheet.Delete
weiter:
Next C
Application.DisplayAlerts = True
End Sub
Gruß Dirk
---------------
100  - Wenn du nicht weißt, wo du hin willst, ist es egal, welchen Weg du einschlägst.

Antworten Top
#12
Abschließend mein Senf, bevor ich mich Ralfs Wunsch entsprechend ruhig verhalte Wink:
- On Error Resume Next und 
- Application.Displayalerts = False
Sind mit Vorsicht zu verwenden, da sie
- sinnvolle Fehlerverfolgung verhindern
- Warnhinweise mit (ggf. nicht gewünschten) Standardantworten abwürgen - Gefahr von Datenverlust

Man sollte es also zielgerichtet verwenden:
- On Error Resume Next : Set sh = Worksheets("Test") : On Error Goto errHandler (oder wohin auch immer)
- Application.Displayalerts = False : Worksheets("Test").Delete : Application.Displayalerts = True

Durch die Schreibweise werden Grund und Abhängigkeit klar und keiner schiebt aus Versehen eine Codezeile dazwischen. 

Klar kann man einwenden: „Aber genau hier kann das eigentlich alles nicht passieren, ich habe alles im Griff.“ 
„Eigentlich“ ist eine der häufigsten Fehlerursachen.
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
[-] Folgende(r) 1 Nutzer sagt Danke an EarlFred für diesen Beitrag:
  • DIZA
Antworten Top
#13
@EarlFred
Deinen Senf in den Code geschmiert  19 (macht auch oder erst Recht bei Quick & Dirty Sinn)
Code:
Option Explicit
Sub Blcopies()
Dim Menge As Long, C As Long, nn As String
Menge = InputBox("Wieviele Blattkopien sollen erstellt werden ?")
For C = 1 To Menge
   nn = Format(C, "000")
      Sheets("TEMPLATE").Copy After:=Sheets(Sheets.Count)
      On Error GoTo istda
      ActiveSheet.Name = nn
      GoTo weiter
istda:
On Error GoTo -1
Application.DisplayAlerts = False: ActiveSheet.Delete: Application.DisplayAlerts = True
weiter:
Next C
End Sub
Gruß Dirk
---------------
100  - Wenn du nicht weißt, wo du hin willst, ist es egal, welchen Weg du einschlägst.

Antworten Top
#14
Dann werfe ich Euch mal einen zum Zerfleddern hin:
Code:
Option Explicit

Sub Test()
Dim i       As Long
Dim sName   As String
Dim shTest  As Object

For i = 1 To 10
   sName = Format(i, "000")
   Set shTest = Nothing
   On Error Resume Next: Set shTest = Sheets(sName): On Error GoTo 0
   If shTest Is Nothing Then
      ThisWorkbook.Worksheets("Template").Copy After:=ThisWorkbook.Sheets(i)
      ActiveSheet.Name = sName
   End If
Next i
End Sub
Wenn "Template" das einzige und erste Blatt neben den durchnummerierten ist, wird sortiert eingefügt.
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
Antworten Top
#15
Hi,

@RPP63 dein SheetMissing könnte aber noch kürzer ausfallen:
Code:
Function SheetMissing(ShName$) As Boolean
SheetMissing = True
On Error Resume Next
SheetMissing = Sheets(ShName) Is Nothing
End Function
Wobei ich das lieber umgekehrt verwende, nämlich als SheetExists. Das fällt noch einfacher aus...
Code:
Function SheetExists(ShName$) As Boolean
On Error Resume Next
SheetExists = Not Sheets(ShName) Is Nothing
End Function

EDIT: zu spät gesehen, das es noch eine zweite Seite gibt...
Trotzdem hier meine 3- bzw. 2-Zeiler mit On Error Resume Next. Ich denke bei nur einer echten Code-Zeile ist dies erlaubt...
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#16
Moin,

eine wirklich gute KI hätte hoffentlich als erstes darauf hingewiesen, dass das Kopieren von Vorlagenblättern in 98% der Fälle auf ein schlechtes Datenmodell hinweist und die beste Lösung darin besteht, erst gar nix zu kopieren ?

Ansonsten muss ich schon zugeben, dass der Code nicht viel schlechter aussieht, als er auch von einem Helferlein oder Bastler mit VBA Grundkenntnissen zu erwarten wäre.

Viele Grüße
derHöpp
[-] Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:
  • HKindler
Antworten Top


Gehe zu:


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