Live-Forum - Die aktuellen Beiträge
Datum
Titel
03.05.2024 10:49:02
03.05.2024 10:43:56
03.05.2024 07:38:32
Anzeige
Archiv - Navigation
1928to1932
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

Tabellenblatt Kopieren

Tabellenblatt Kopieren
11.05.2023 12:36:34
Dani

Hallo zusammen
Ich brauche mal wieder euere wert volle Hilfe
Folgendes ich habe mir ein Code gebastelt so gut wie es ging.
Ziel ist das man die Tabelle "Stundenabrechnung" als Vorlage kopiert und in ein neue Arbeitsmappe einfügt und die Tabellenblätter beschriftet nach Datum

Nun zum Problem dies Code würde eigentlich funktionieren, jedoch werden die Togglebutton, und Formeln nicht mit Kopiert.
Wie müsste ich diesen Code ändern?
Könntet Ihr mal Bitte diesen Code überprüfen.

Besten Dank im Voraus

Dani

Private Sub CommandButton1_Click()
Dim srcWorkbook As Workbook
Dim newWorkbook As Workbook
Dim srcSheet As Worksheet
Dim newSheet As Worksheet
Dim startDate As Date
Dim endDate As Date
Dim currentDate As Date
Dim dateSuffix As String
Dim startDateInput As String
On Error Resume Next
' Eingabedaten für das Startdatum abfragen
startDateInput = InputBox("Geben Sie das Startdatum (z.B. 01.01.2023) ein:", "Datumseingabe")
endDate = InputBox("Geben Sie das Enddatum (z.B. 31.01.2023) ein:", "Datumseingabe")

' Prüfen, ob das Eingabefenster abgebrochen wurde
If startDateInput = "" Then
Exit Sub
End If

' Datumswert aus der Eingabe konvertieren
startDate = DateValue(startDateInput)

' Prüfen, ob die Konvertierung erfolgreich war
If Err.Number > 0 Then
MsgBox "Ungültiges Startdatum eingegeben.", vbExclamation
Exit Sub
End If
' Ursprüngliche Arbeitsmappe und Tabellenblatt
Set srcWorkbook = ThisWorkbook
Set srcSheet = srcWorkbook.Worksheets("Stundenabrechnung")

' Neue Arbeitsmappe erstellen
Set newWorkbook = Workbooks.Add

Application.DisplayAlerts = True

' Datumssuffix festlegen
dateSuffix = Format(Date, "yyyy-mm-dd")

' Schleife durch alle Tage im angegebenen Zeitraum
currentDate = startDate
Do While currentDate = endDate

' Neues Tabellenblatt erstellen und umbenennen
Set newSheet = newWorkbook.Sheets.Add(After:=newWorkbook.Sheets(newWorkbook.Sheets.Count))
newSheet.Name = Format(currentDate, "dd-mm-yyyy")

' Daten von der Vorlage kopieren
srcSheet.Cells.Copy newSheet.Cells

' Datum in der Tabelle aktualisieren
With newSheet.Range("g4:i5")
.Value = Format(currentDate, "ddd.dd.mm.yyyy")
End With

' Zum nächsten Tag wechseln
currentDate = currentDate + 1

Loop
' Meldung anzeigen
MsgBox "Die Tabellenblätter wurden erfolgreich erstellt und in einer neuen Arbeitsmappe gespeichert."
Application.DisplayAlerts = False

On Error GoTo 0

End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt Kopieren
11.05.2023 14:08:47
Dani
Hallo Ralf
Besten Dank für die prompte Antwort.
Die Seite kenne ich hat mir nicht weiter gebracht.
Wie gesagt togglebutton müssten auch mit kopiert werden. Ansonsten wäre es perfekt.
Wie gewünscht sende ich dir die Datei.

https://www.herber.de/bbs/user/159151.xlsm

Besten Dank und freundlicher Gruß
Dani


Anzeige
AW: Tabellenblatt Kopieren
11.05.2023 20:36:43
Yal
Hallo Dani,

ich kann nicht nachvollziehen, warum die Controls nicht kopiert werden.

Was noch offen ist, ist wozu diese gebraucht werden. Eine Kombination von Daten (in den Zelle) und Steuerungselement ist nie einfach zu handeln und selten nötig. Du musst bedenken, dass in der Kopie diesen Elemente nicht mehr ToggleButton1 bis 5 heissen, sondern 6 bis 10, dann 11 bis 15, usw. Viel Spass bei der Zuordnung der Makro zu den Elemente.
Es wäre viel leichter einen Null oder eins in der Zelle zu haben. Diese könnte duch einen Datengültigkeitsprüfung als Dropdown auswählbar sein. Dann ist es eine Wert, womit man rechnen kann.

Ich habe mir erlaubt, dein Code unter die Lupe zu nehmen und einiges zu kürzen. Ist aber nichts anderes als dein vorigen Code:
Private Sub CommandButton2_Click()
'Variablen in der Reihenfolge des Auftretens
Dim StartDate As Date
Dim EndDate As Date
Dim D
Dim srcSheet As Worksheet
Dim ws As Worksheet

    On Error Resume Next

' Eingabedaten für das Startdatum abfragen
    StartDate = InputBox("Geben Sie das Startdatum (z.B. 01.01.2023) ein:", "Datumseingabe")
    EndDate = InputBox("Geben Sie das Enddatum (z.B. 31.01.2023) ein:", "Datumseingabe")

' Prüfen, ob das Eingabefenster abgebrochen wurde
    If Not IsDate(StartDate) Then
        MsgBox "Ungültiges Startdatum eingegeben.", vbExclamation
        Exit Sub
    End If
    If Not IsDate(EndDate) Then
        MsgBox "Ungültiges Enddatum eingegeben.", vbExclamation
        Exit Sub
    End If

' Quell-Blatt festhalten
    Set srcSheet = ThisWorkbook.Sheets("Stundenabrechnung")

    Application.DisplayAlerts = False
' Neue Arbeitsmappe erstellen
    With Workbooks.Add
    ' Tabellenblatt "Stundenabrechnung" in die neue Arbeitsmappe kopieren
        srcSheet.Copy Before:=.Worksheets(1)
    'ein neues WB hat immer mind. ein (leeres) Blatt. Nach Kopie von Stundenabrechnung wird/werden diese nicht mehr benötigt.
        For D = 2 To .Worksheets.Count: .Worksheets(2).Delete: Next
    ' Das kopierte Tabellenblatt umbenennen
        .Worksheets(1).Name = srcSheet.Name
    ' Schleife durch alle Tage im angegebenen Zeitraum
        For D = StartDate To EndDate
        ' Neues Tabellenblatt erstellen und umbenennen
            Set ws = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count))
            ws.Name = Format(D, "dd-mm-yyyy")
            srcSheet.Cells.Copy ws.Cells ' Daten von der Vorlage kopieren
            ws.Range("G5").Value = Format(D, "dd.mm.yyyy") ' Datum in der Tabelle aktualisieren
        Next
    End With
' Meldung anzeigen
    MsgBox "Die Tabellenblätter wurden erfolgreich erstellt und in einer neuen Arbeitsmappe gespeichert."
    Application.DisplayAlerts = True
End Sub
VG
Yal


Anzeige
AW: Tabellenblatt Kopieren
12.05.2023 08:27:38
Dani
Hallo Yal
Vielen Lieben Dank das du den Code überprüft und gekürzt hast.
zu den Toggle Buttons es wären 27 stück weil wir haben B = Bürodienst und A = Außendienst .
Yal auch da Besten Dank für die Erklärung ich werde die Toggle Buttons löschen und mal dein Vorschlag testen.

Noch mals Danke schön und verbleibe mit freundlichem Gruß

Dani

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige