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

Forumthread: VBA - Tabellenblatt kopieren und Namen eingeben

VBA - Tabellenblatt kopieren und Namen eingeben
14.10.2016 16:10:05
NeubPa
Hallo,
ich fange gerade an mit VBA zu arbeiten. Ich wollte in einem Excel Dokument über ein Makro das aktuelle Tabellenblatt kopieren und über eine Inputbox den Namen eingeben lassen. Oder einfach eine Kopie des aktuellen mit Durchzählung Bsp. "Name (1)". Irgendwie bekomme ich es nicht. Wenn ich einfach OK klicke ist zwar die Kopie da, aber immer mit Laufzeitfehler 1004 Info. Habt ihr eine Lösung?
Sub Makro1()
ActiveSheet.Copy After:=Sheets(Sheets.Count)
Name = InputBox("Name of new Sheet - or click OK to copy")
ActiveSheet.Name = Name
End Sub
Vielen Dank für eure Hilfe
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Tabellenblatt kopieren und Namen eingeben
14.10.2016 16:17:27
Werner
Hallo,
Sub Makro1()
Dim strName As String
ActiveSheet.Copy After:=Sheets(Sheets.Count)
strName = InputBox("Name of new Sheet - or click OK to copy")
ActiveSheet.Name = strName
End Sub
Gruß Werner
AW: VBA - Tabellenblatt kopieren und Namen eingeben
14.10.2016 16:31:31
NeubPa
Hallo Werner,
vielen dank für die schnelle Antwort. Leider bekomme ich noch den gleichen Laufzeitfehler, wenn ich einfach OK klicke in der InputBox (um den Namen einfach zu übernehmen anstelle einen einzugeben). Gibt es hierfür eine Lösung? Oder das z.B. in der InputBox direkt der Name des zu kopierenden Reiters mit (count) als Vorschlag angezeigt wird? Ich habe schon alles probiert und komme nicht weiter.
Vielen Dank für die Hilfe!
Anzeige
AW: VBA - Tabellenblatt kopieren und Namen eingeben
14.10.2016 16:32:39
NeubPa
Hier noch die Fehlermeldung. Userbild
AW: VBA - Tabellenblatt kopieren und Namen eingeben
14.10.2016 16:44:00
Werner
Hallo,
Sub Makro1()
Dim strName As String
ActiveSheet.Copy After:=Sheets(Sheets.Count)
strName = InputBox("Name of new Sheet - or click OK to copy")
If Not strName = "" Then
ActiveSheet.Name = strName
Else
Exit Sub
End If
End Sub
Gruß Werner
Anzeige
AW: VBA - Tabellenblatt kopieren und Namen eingeben
14.10.2016 17:15:29
NeubPa
Vielen Dank! Läuft jetzt super. Danke schön!
Gerne u. Danke für die Rückmeldung. o.w.T.
14.10.2016 17:19:11
Werner
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Tabellenblatt kopieren und umbenennen mit VBA


Schritt-für-Schritt-Anleitung

Um ein Excel-Tabellenblatt zu kopieren und den Namen über eine InputBox einzugeben, kannst Du folgendes VBA-Makro verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge folgenden Code in das Modul ein:

    Sub Makro1()
       Dim strName As String
       ActiveSheet.Copy After:=Sheets(Sheets.Count)
       strName = InputBox("Name des neuen Blattes - oder klicke OK, um zu kopieren")
       If Not strName = "" Then
           ActiveSheet.Name = strName
       Else
           Exit Sub
       End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Drucke ALT + F8, wähle Makro1 aus und klicke auf Ausführen.

Jetzt wird das aktuelle Tabellenblatt kopiert und Du kannst einen neuen Namen vergeben.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt auf, wenn der Name, den Du eingeben möchtest, ungültig ist. Achte darauf, dass der Name keine Sonderzeichen oder bereits existierenden Tabellennamen enthält.
  • InputBox zeigt keinen aktuellen Namen an: Um dem Benutzer den Namen des zu kopierenden Blattes als Vorschlag anzuzeigen, kannst Du den Code anpassen:

    strName = InputBox("Name des neuen Blattes - oder klicke OK, um zu kopieren", "Neuer Name", ActiveSheet.Name & " (1)")

Alternative Methoden

Du kannst auch die Funktion vba tabellenblatt kopieren und umbenennen in Kombination mit einer Schleife nutzen, um die Tabellennamen automatisch zu nummerieren, falls der Name bereits existiert:

Sub Makro1()
    Dim strName As String
    Dim i As Integer
    ActiveSheet.Copy After:=Sheets(Sheets.Count)
    strName = ActiveSheet.Name
    i = 1
    Do While Not IsError(Evaluate("'" & strName & " (" & i & ")" & "'!A1"))
        i = i + 1
    Loop
    ActiveSheet.Name = strName & " (" & i & ")"
End Sub

Praktische Beispiele

  • Excel VBA Arbeitsblatt kopieren: Wenn Du ein Arbeitsblatt kopieren und umbenennen möchtest, kannst Du das gleiche Makro verwenden, um die Funktionalität zu erweitern.
  • Excel Reiter duplizieren: Verwende dieses Makro, um beliebige Reiter in Deinem Excel-Dokument zu duplizieren, ideal für Vorlagen oder Berichte.

Tipps für Profis

  • Modulare Programmierung: Halte Deinen VBA-Code modular, um die Wartung zu erleichtern. Erstelle separate Funktionen für das Kopieren und Umbenennen von Tabellenblättern.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um Laufzeitfehler besser zu managen und um den Benutzer zu informieren, falls etwas schiefgeht.

FAQ: Häufige Fragen

1. Wie kann ich ein Excel Makro Tabellenblatt kopieren? Du kannst das oben beschriebene VBA-Makro verwenden, um ein Tabellenblatt zu kopieren und einen neuen Namen zu vergeben.

2. Was mache ich, wenn der Name bereits existiert? Das angepasste Beispiel im Abschnitt „Alternative Methoden“ zeigt, wie Du automatisch einen neuen Namen mit einer Zählung generierst, falls der Name bereits existiert.

3. Funktioniert dieses Makro in allen Excel-Versionen? Dieses Makro sollte in den meisten modernen Excel-Versionen ab Excel 2007 funktionieren. Achte darauf, dass Du die Makros in den Excel-Einstellungen aktiviert hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige