Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabellenblatt kopieren einfügen Namen ändern

Tabellenblatt kopieren einfügen Namen ändern
23.01.2009 10:59:19
Lucia
Einen wunderschönen letzten Arbeitstagen zusammen:-)
Folgender Sachverhalt:
In einer Arbeitsmappe werden Auswertungen gemacht. Dazu gibt es das "Controllingblatt", dass an vorletzter Stelle steht, und ein "vorlage"-blatt, welches kopiert werden muss, vor das Controllingblatt eingefügt werden muss und mit Namen "Potenzial - Nr" benannt werden muss.
Von vorne her hat man dann also angefangen mit Potenzial 1 die zig Potenzialblätter, dann Controlling, dann Vorlageblatt.
Mit einem Makro möchte ich jetzt, dass das kopieren der Vorlage + Benennen mit "Potenzial & nächste noch nicht vergebene Nummer" sowie aufsteigendes Sortieren der Tabellenblätter bis zum Blatt "Controlling" automatisch funktioniert;-)
Das wär toll...bekommen wir das hin?
Danke,
Lucia
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt kopieren einfügen Namen ändern
23.01.2009 11:07:57
Ramses
Hallo
Probier mal
Sub Create_wks()
    Worksheets("Vorlage").Copy before:=Worksheets("Controlling")
    ActiveSheet.Name = "Potenzial " & Worksheets.Count - 2
End Sub

Gruss Rainer
Anzeige
supi
23.01.2009 11:15:00
Lucia
Hi Rainer,
kurz und knackig und funktioniert sofort!!prima!!
AW: Tabellenblatt kopieren einfügen Namen ändern
23.01.2009 11:36:00
fcs
Hallo Lucia,
die folgende Prozedur erledigt die gewünschten Aktionen
Gruß
Franz

Sub PotenzialNeu()
'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 = "Potenzial " 'Startext für Name Blatt-Kopie
Const strVorlage As String = "Vorlage" 'Name des Vorlageblattes
Const varEinfuegeBlatt As Variant = "Controlling" 'Name oder Nummer des Blatts vor _
dem eingefügt werden soll
Const strFormat As String = "0" '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


Anzeige
AW: Tabellenblatt kopieren einfügen Namen ändern
23.01.2009 15:48:44
Lucia
Hallo Franz,
Vielen Dank auch für deinen Vorschlag!Ich habs jetzt mal damit gemacht:

Sub Create_wks()
Worksheets("Vorlage").Copy before:=Worksheets("Controlling")
ActiveSheet.Name = "Potenzial " & Worksheets.Count - 2
End Sub


und es hat sehr gut funktioniert. Werde deine Lösung aber im Hinterstübchen behalten, sollten Probleme auftauchen:-)
Schönes Wochenende,
Lucia

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Tabellenblatt kopieren, einfügen und umbenennen in Excel VBA


Schritt-für-Schritt-Anleitung

Um ein Tabellenblatt in Excel VBA zu kopieren, einzufügen und umzubenennen, kannst Du die folgende Schritt-für-Schritt-Anleitung nutzen:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11 in Excel.
  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen > Modul.
  3. Füge den VBA-Code ein:

    • Nutze den Code, um das Tabellenblatt zu kopieren und umzubenennen:
    Sub Create_wks()
       Worksheets("Vorlage").Copy before:=Worksheets("Controlling")
       ActiveSheet.Name = "Potenzial " & Worksheets.Count - 2
    End Sub
  4. Führe das Makro aus:

    • Drücke F5 oder klicke auf Ausführen, um das Makro zu starten.

Das Makro kopiert das "Vorlage"-Blatt vor das "Controlling"-Blatt und benennt es automatisch um.


Häufige Fehler und Lösungen

  • Fehler: "Blatt mit diesem Namen existiert bereits":

    • Stelle sicher, dass der neue Name für das Tabellenblatt einzigartig ist. Du kannst die Logik im Code anpassen, um sicherzustellen, dass die Nummerierung fortlaufend erfolgt.
  • Fehler: "Das angegebene Blatt wurde nicht gefunden":

    • Überprüfe die Namen der Blätter, die Du im Code verwendest. Achte auf Leerzeichen und Groß-/Kleinschreibung.

Alternative Methoden

Wenn Du kein VBA verwenden möchtest, gibt es auch manuelle Methoden, um ein Tabellenblatt zu kopieren und umzubenennen:

  1. Rechtsklick auf das Tabellenblatt und wähle Verschieben oder Kopieren.
  2. Markiere die Option Kopie erstellen.
  3. Klicke auf OK und ändere den Namen des neuen Blattes durch doppeltes Klicken auf den Tab.

Diese Methode ist einfach, bietet jedoch nicht die Automatisierung, die ein VBA-Makro bietet.


Praktische Beispiele

Hier sind einige weitere Beispiele, wie Du VBA nutzen kannst, um Tabellenblätter zu kopieren und umzubenennen:

  1. Tabellenblatt automatisch kopieren und umbenennen:

    Sub PotenzialNeu()
       Dim wbAktiv As Workbook
       Dim wks As Worksheet
       Dim intNrName As Integer
       Dim strKopieNeu As String
       Const strKopie As String = "Potenzial "
       Const strVorlage As String = "Vorlage"
       Const varEinfuegeBlatt As Variant = "Controlling"
    
       Set wbAktiv = ActiveWorkbook
       ' Nummer des neuen Namens ermitteln
       For Each wks In wbAktiv.Worksheets
           If LCase(Left(wks.Name, Len(strKopie))) = LCase(strKopie) Then
               If IsNumeric(Mid(wks.Name, Len(strKopie) + 1)) Then
                   intNrName = Application.WorksheetFunction.Max(intNrName, CLng(Mid(wks.Name, Len(strKopie) + 1)))
               End If
           End If
       Next
       strKopieNeu = strKopie & (intNrName + 1)
       wbAktiv.Worksheets(strVorlage).Copy before:=wbAktiv.Worksheets(varEinfuegeBlatt)
       ActiveSheet.Name = strKopieNeu
    End Sub
  2. Kopieren und in eine neue Arbeitsmappe einfügen:

    Sub KopiereInNeueMappe()
       Worksheets("Vorlage").Copy
       ' Neue Arbeitsmappe wird automatisch erstellt
       ' Hier kannst Du weitere Aktionen durchführen
    End Sub

Tipps für Profis

  • Variablen sinnvoll nutzen: Setze Konstanten für die Blattnamen, damit Du sie leicht ändern kannst.
  • Fehlerbehandlung einbauen: Erweitere Deinen Code mit On Error GoTo, um Fehler abzufangen und benutzerfreundliche Meldungen anzuzeigen.
  • Versionen beachten: Teste Deinen VBA-Code in der Version von Excel, die Du verwendest, um sicherzustellen, dass alle Funktionen unterstützt werden.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Blätter auf einmal kopieren?
Du kannst eine Schleife verwenden, um mehrere Blätter zu kopieren und einzufügen. Achte darauf, den Zielort korrekt zu definieren.

2. Gibt es eine Möglichkeit, die Blätter automatisch zu sortieren?
Ja, Du kannst die Worksheets.Sort Methode verwenden, um die Blätter nach Namen oder einer anderen Logik zu sortieren.

3. Kann ich das Makro anpassen, um andere Blätter zu verwenden?
Ja, ändere einfach die Werte für die Variablen strVorlage und varEinfuegeBlatt, um andere Blätter zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige