Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1604to1608
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
02.02.2018 11:34:23
Christian
Hallo zusammen,
dank eurer Hilfe bin ich schon viel weiter gekommen, als eigentlich gedacht und entwickel immer mehr Freude beim Umgang mit Makros.
Allerdings scheitere ich im Moment mit einen Makro, welcher ein Arbeitsblatt (Name KW XX, wobei XX für bspw. KW 01, KW 02, KW 03, ... steht) kopieren (einschl. Formeln, Format, etc.) und fortlaufend nummerieren soll (bspw. KW 05 wird zu KW 06).
Zur Zeit habe ich eine Blanko Wochenvorlage (Name Vorlage), die mit Hilfe des folgenden Makros kopiert wird und ein Makro, welcher die Vorwoche kopiert. Allerdings muss dort die entsprechende Kalenderwoche manuell eingetragen werden was ich nun versuche zu "automatisieren".
Makro für neue Kalenderwoche:

Private Sub CommandButton4_Click()
'CommandButton 4 = Neue Woche beginnen
'Vorlagenblatt kopieren, einfügen und umbenennen mit fortlaufender Nr.
Dim wbAktiv As Workbook
Dim wks As Worksheet
Dim intNrName As Integer
Dim strKopieNeu As String
Const strKopie As String = "KW " 'Startext für Name Blatt-Kopie
Const strVorlage As String = "Vorlage" 'Name des Vorlageblattes
Const varEinfuegeBlatt As Variant = "Vorlage" 'Name oder Nummer des Blatts vor dem eingefügt   _
_
werden soll
Const strFormat As String = "00" 'Format für Zählziffer bei Namen
On Error GoTo Fehler
Set wbAktiv = ActiveWorkbook
'Nummer des Neuen Namens ermitteln
'Es wird die höchste Zählnummer der Namen ermittelt, die mit dem Kopie-Namen beginnnen
For Each wks In wbAktiv.Worksheets
With Application.WorksheetFunction
If LCase(Left(wks.Name, Len(strKopie))) = LCase(strKopie) Then
If IsNumeric(Mid(wks.Name, Len(strKopie) + 1)) Then
intNrName = .Max(intNrName, CLng(Mid(wks.Name, Len(strKopie) + 1)))
End If
End If
End With
Next
'Neuen Namen ermitteln
strKopieNeu = strKopie & Format(intNrName + 1, strFormat)
'Neues Blatt anlegen und Name zuweisen
wbAktiv.Worksheets(strVorlage).Copy Before:=wbAktiv.Worksheets(varEinfuegeBlatt)
ActiveSheet.Name = strKopieNeu
Fehler:
With Err
If .Number  0 Then
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End If
End With
End Sub

Derzeitiges Makro für Wochenkopie:

Private Sub CommandButton11_Click()
'Vorwoche kopieren, einfügen und umbenennen mit fortlaufender Nr.
Dim NewName As String
ActiveSheet.Copy After:=ActiveSheet
KW = InputBox("Geben Sie einen Tabellenblattnamen ein")
ActiveSheet.Name = KW
End Sub

Vielen Dank vorab für eure Unterstützung und Ratschläge.
Gruß
Christian

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt kopieren
02.02.2018 12:31:58
Rudi
Hallo,
wenn Vorwoche das aktive Blatt ist:
Private Sub CommandButton11_Click()
'Vorwoche kopieren, einfügen und umbenennen mit fortlaufender Nr.
Dim KW As Integer
Dim NewName As String
KW = CInt(Right(ActiveSheet.Name, 2)) + 1
ActiveSheet.Copy After:=ActiveSheet
ActiveSheet.Name = "KW " & Format(KW, "00")
End Sub

Gruß
Rudi
AW: Tabellenblatt kopieren
02.02.2018 12:36:11
Christian
Hallo Rudi,
vielen Dank für deine schnelle Lösung.
Funktioniert einwandfrei!
Gruß
Christian
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige