Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1688to1692
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

Kopieren Tabellenblatt

Kopieren Tabellenblatt
26.04.2019 18:40:42
Michael
Hallo zusammen,
ich brauche nochmal eure Hilfe.
Habe mir folgenden Code zusammen geschustert.
Er funktioniert soweit.
Ich möchte aber, dass der aktuelle Name des Tabellenblattes (ist immer das Jahr) plus 1 Jahr als neuer Name verwendet wird.
Sub NeuesBlatt()
ActiveSheet.Copy After:=Sheets(Worksheets.Count)
On Error Resume Next 'Falls Blattname bereits existiert
ActiveSheet.Name = "2019" & Sheets.Count
Range("G1").Value = Range("G1").Value + 1
Dim FirstRow&
Dim Last_Row&
FirstRow = 10
Last_Row = ActiveSheet.Rows(ActiveSheet.UsedRange.Rows.CountLarge).Row
Rows(FirstRow).Resize(Last_Row).Delete 'statt Select -> Delete zum L?schen
ActiveSheet.Rows(9).Hidden = True
End Sub

Viele Grüße
Michael

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren Tabellenblatt
26.04.2019 18:46:02
Hajo_Zi
Hallo Michael,
ActiveSheet.Name = Year(Date) + 1

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: Kopieren Tabellenblatt
26.04.2019 18:51:17
Michael
Hallo Hajo,
klappt!
Vielen Dank
AW: Kopieren Tabellenblatt
26.04.2019 18:56:09
Werner
Hallo Michael,
das stimmt dann aber nicht mit deiner Eingangsforderung überein.
dass der aktuelle Name des Tabellenblattes (ist immer das Jahr) plus 1 Jahr als neuer Name verwendet wird
Wenn du so das Blatt mit dem Namen 2018 kopierst, dann bekommst du 2020 als Blattname des neuen Blattes. Zudem ist das On Error nicht so berauschend, ein Blatt wird dir dann trotzdem angelegt.
Sub NeuesBlatt()
Dim loBlattname As Long, ws As Worksheet
Dim boVorhanden As Boolean
loBlattname = CLng(ActiveSheet.Name)
For Each ws In ThisWorkbook.Worksheets
If ws.Name = loBlattname + 1 Then
MsgBox "Fehler, das Blatt existiert bereits."
boVorhanden = True
Exit For
End If
Next ws
If Not boVorhanden Then
ActiveSheet.Copy After:=Sheets(Worksheets.Count)
ActiveSheet.Name = loBlattname + 1
End If
End Sub
Gruß Werner
Anzeige
AW: Kopieren Tabellenblatt
26.04.2019 19:43:07
Michael
Hallo Werner, hast Recht. Hat aus dem Tabellenblatt 2019 raus funktioniert. Wenn ich aber aus 2020 raus den Befehl ausführe legt er mir ein neues Tabellenblatt mit dem Namen 2020(2) an.
Bei deinem Code bekomme ich aber einen Laufzeitfehler an dieser Stelle.
If ws.Name = loBlattname + 1 Then
Gruß
Michael
AW: Kopieren Tabellenblatt
26.04.2019 19:51:53
Werner
Hallo Michael,
ich nicht und mehr kann ich dazu nicht sagen, weil ich deine Datei nicht kenne.
Gruß Werner
AW: Kopieren Tabellenblatt
26.04.2019 20:28:11
Michael
Hallo Werner,
mit folgendem Code habe ich mein Problem gelöst.
Sub NeuesBlatt()
If MsgBox("Wirklich ein neues Jahr hinzufügen?", vbYesNo) = vbYes Then
ActiveSheet.Copy after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = Range("G1").Value + 1 * 1
Range("G1").Value = Range("G1").Value + 1
End If
End Sub

Danke für deine Hilfe
Anzeige
AW: Kopieren Tabellenblatt
26.04.2019 20:42:10
Werner
Hallo Michael,
das hat jetzt nicht mehr viel mit dem Eingangsbeitrag zu tun - jetzt Blattname aus einer Zelle. Und eine Prüfung ob das Blatt schon existiert fehlt auch.
Gruß Werner
AW: Kopieren Tabellenblatt
26.04.2019 20:53:45
Michael
Hallo Werner,
da ich das immer aus dem aktiven Blatt heraus machen möchte, ist die Prüfung nicht unbedingt notwendig.
Und wenn ich ehrlich bin, kopiere ich mir hier irgendwas zusammen was am Ende manchmal sogar klappt.
Die Lösung ist für mich so aber auch okay.
Wenn man hier noch eine Prüfung einbauen kann, würde es natürlich nicht schaden.
Gruß
Michael
AW: Kopieren Tabellenblatt
27.04.2019 00:09:11
Michael
Hallo zusammen,
könnte mir jemand in meinen Code noch eine Prüfung auf Vorhandenes Tabellen Blatt einbauen?
Gruß
Michael
Sub NeuesBlatt()
'Blattschutz freigeben
ActiveSheet.Unprotect Password:=""
'Arbeitsblatt kopieren und neu benenenen, Name aus Zelle G1 des aktiven Blattes plus 1
ActiveSheet.Copy after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = Range("G1").Value + 1 * 1
Range("G1").Value = Range("G1").Value + 1
'Zeilen ab Zeile 10 l?schen
FirstRow = 10
Last_Row = ActiveSheet.Rows(ActiveSheet.UsedRange.Rows.CountLarge).Row
Rows(FirstRow).Resize(Last_Row).Delete
'Zelle AN1 nach unten kopieren
ActiveSheet.Range("AN1:AN1500").FillDown
'Zeile 9 ausblenden
ActiveSheet.Rows(9).Hidden = True
'Blattschutz aktivieren
ActiveSheet.Protect Password:=""
End Sub

Anzeige
AW: Kopieren Tabellenblatt
27.04.2019 07:21:43
Hajo_Zi
feststellen, ob Worksheet vorhanden ist
hier ein Beispiel, welches Du relativ einfach entsprechend abändern kannst:
Option Explicit
Sub TabAuswahl()
Dim BoVorhanden As Boolean
Dim WsTabelle As Worksheet
For Each WsTabelle In Worksheets
If WsTabelle.Name = "Tabelle1" Then
BoVorhanden = True
Exit For
End If
Next WsTabelle
If BoVorhanden Then
'vorhanden
Else
'nicht vorhanden
End If
End Sub

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige