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

Forumthread: Kopieren und Umbenennen von Arbeitsblatt

Kopieren und Umbenennen von Arbeitsblatt
13.03.2014 20:22:05
Arbeitsblatt

Hallo,
Ich habe fünf Arbeitsblätter mit folgenden Namen: Übersicht, R1, K1, A1, Grunddaten.
Ich will mit einen Knopf, ein Arbeitsblatt kopieren und umbenennen, je nachdem welches Blatt aktiv ist.
Zum Beispiel: wenn Blatt K1 aktiv ist, sollte es dieses Blatt kopieren und benennen als K2, die Blattnamen sortieren.
Folgende Reihenfolge soll bekommen werden:
Übersicht, R1, K1, K2 A1, Grunddaten
Die Kopierfunktion sollte nur auf die Arbeitsblatter wo der Name beginnt mit R, K und A funktionieren
Kann mir jemand helfen mit die VBA Kode?
Mit freundlichen Grüßen, Benny

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren und Umbenennen von Arbeitsblatt
14.03.2014 07:31:45
Arbeitsblatt
Hallo Benny,
wo der Name beginnt mit R, K und A funktionieren 

also kann der Name auch Rosenwasser1 lauten?

AW: Kopieren und Umbenennen von Arbeitsblatt
14.03.2014 08:21:23
Arbeitsblatt
Hallo Hajo,
Nein, die R, K und A sind fest.
Es kann letztendlich zum Beispiel so werden:
R1, R2, R3, R4, K1, K2, A1, A2, A3
Gruß, Benny

Anzeige
AW: Kopieren und Umbenennen von Arbeitsblatt
14.03.2014 08:42:36
Arbeitsblatt
Hallo Hajo,
Nein, die R, K und A sind fest.
Es kann letztendlich zum Beispiel so werden:
R1, R2, R3, R4, K1, K2, A1, A2, A3
Gruß, Benny

AW: Kopieren und Umbenennen von Arbeitsblatt
14.03.2014 09:29:34
Arbeitsblatt
Hi Benny,
viell. hilft dir das weiter.
Sub SheetCopy()
Dim newSheet As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error GoTo Errorhandler
Name:
Do
newSheet = InputBox("Name für neues Blatt eigeben:", _
"Blattname vergeben")
If StrPtr(newSheet) = 0 Then Exit Sub
If StrPtr(newSheet) = 1 Or newSheet = "" Then
MsgBox ("Kein Blattname vergeben!")
End If
Loop Until newSheet  ""
ActiveSheet.Copy before:=Sheets(1)
ActiveSheet.Name = newSheet
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Sub
Errorhandler:
If Err.Number  0 Then
MsgBox "Fehler: " & Chr(10) _
& Err.Description
ActiveSheet.Delete
GoTo Name
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Gruß Uwe

Anzeige
meine Bsp.Datei ist fertig ...
14.03.2014 15:51:41
Matthias
Hallo
(m)eine Bsp.Datei ist fertig ... (geht auch ganz automatisch - ohne Inputbox)
noch Interesse? (denn Uwe wartet sicher auf ne Rückmeldung). Da könnte man denken das Interesse ist flöten.
Wenn Blatt(K1) schon kopiert wurde und es gibt bereits ein Blatt(K2), Was soll passieren?
Gruß Matthias

Anzeige
AW: meine Bsp.Datei ist fertig ...
14.03.2014 18:41:13
Uwe
Hi Matthias,
hast wohl Recht, kein Interesse mehr da.
Gruß Uwe

Hallo Uwe ...
14.03.2014 19:27:42
Matthias
Hallo Uwe
Dann warten wir mal noch ein bisschen ab, ob er sich doch noch meldet.
Gruß Matthias

AW: meine Bsp.Datei ist fertig ...
14.03.2014 21:43:30
Uwe
So Feierabend, Wochenende... :-)
hab da auch noch ne Bsp-Datei, allerdings auch mit Inputbox.
Nur für den Fall das das noch von Interesse ist.
https://www.herber.de/bbs/user/89674.xlsm
Schönes Wochenende und Grüße aus Dresden
Uwe
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Arbeitsblatt kopieren und umbenennen in Excel VBA


Schritt-für-Schritt-Anleitung

Um ein Arbeitsblatt in Excel zu kopieren und umbenennen, kannst du den folgenden VBA-Code verwenden. Dieser Code erlaubt es dir, ein aktives Blatt zu kopieren und automatisch einen neuen Namen zu vergeben, abhängig von dem Namen des kopierten Blatts.

  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 den folgenden Code ein:
Sub SheetCopy()
    Dim newSheet As String
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    On Error GoTo Errorhandler
Name:
    Do
        newSheet = InputBox("Name für neues Blatt eingeben:", "Blattname vergeben")
        If StrPtr(newSheet) = 0 Then Exit Sub
        If StrPtr(newSheet) = 1 Or newSheet = "" Then
            MsgBox ("Kein Blattname vergeben!")
        End If
    Loop Until newSheet <> ""

    ActiveSheet.Copy before:=Sheets(1)
    ActiveSheet.Name = newSheet
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Exit Sub
Errorhandler:
    If Err.Number <> 0 Then
        MsgBox "Fehler: " & Chr(10) & Err.Description
        ActiveSheet.Delete
        GoTo Name
    End If
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Führe das Makro aus, um ein Blatt zu kopieren und umzubenennen.

Häufige Fehler und Lösungen

  • Fehler: "Blattname bereits vorhanden"
    Wenn du einen Namen verwendest, der bereits existiert, wird ein Fehler auftreten. Stelle sicher, dass der neue Name einzigartig ist.

  • Blatt wird nicht kopiert
    Überprüfe, ob das aktive Blatt tatsächlich kopiert werden kann. Der Code funktioniert nur für Blätter, deren Namen mit R, K oder A beginnen.


Alternative Methoden

Eine alternative Methode zum Kopieren und Umbenennen eines Arbeitsblatts ist die Verwendung von Schaltflächen in der Excel-Oberfläche. Du kannst eine Schaltfläche erstellen und das oben genannte Makro daran binden, um den Prozess zu automatisieren, ohne den VBA-Editor zu öffnen.

  1. Gehe zu Entwicklertools und wähle Einfügen.
  2. Wähle Button (Formsteuerung) und ziehe eine Schaltfläche auf dein Arbeitsblatt.
  3. Wähle das Makro SheetCopy aus, um es mit der Schaltfläche zu verknüpfen.

Praktische Beispiele

Angenommen, du hast die Blätter R1, K1 und A1. Wenn du das Blatt K1 kopierst und als K2 benennst, wird die Reihenfolge in deinem Arbeitsblatt so aussehen:

  • Übersicht
  • R1
  • K1
  • K2
  • A1
  • Grunddaten

Dieser Prozess kann für jedes Blatt wiederholt werden, das mit den Buchstaben R, K oder A beginnt.


Tipps für Profis

  • Automatisierung: Du kannst den Code erweitern, um die Benennung der Blätter automatisch zu generieren (z.B. K1, K2, K3 usw.), anstatt manuell einen Namen einzugeben.
  • Fehlerbehandlung: Implementiere eine robustere Fehlerbehandlung, um verschiedene Fehlerquellen abzufangen.
  • Schutz von Blättern: Überlege, ob es sinnvoll ist, die Blätter nach dem Kopieren zu schützen, um ungewollte Änderungen zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich den Namen des neuen Blatts automatisch generieren?
Ja, du kannst den Code anpassen, um die Namen basierend auf dem aktiven Blatt zu generieren (z.B. K1 wird zu K2).

2. Funktioniert der VBA-Code in allen Excel-Versionen?
Der Code sollte in den meisten modernen Excel-Versionen funktionieren. Achte darauf, dass die Entwicklertools aktiviert sind.

3. Was passiert, wenn ich ein Blatt mit einem ungültigen Namen kopieren möchte?
Der Code wird eine Fehlermeldung anzeigen und dich auffordern, einen gültigen Namen einzugeben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige