Es hat keinen Sinn, über die Männer zu jammern. Wir müssen mit dem vorhandenen Material arbeiten.

Einfach nicht aufgepasst!

Ich habe eine Arbeitsmappe mit sieben + ein, also acht Tabellenblattern. Sie heißen:

Chef, Brummbär, Schlafmütz, Hatschi, Pimpel, Happy, Seppel und Schneewittchen

Die ersten drei Blätter sind ausgeblendet, ebenso das letzte (Master-)Blatt:

Also auf Excel-Seite sieht das so aus:

Nun soll per VBA das erste Blatt sichtbar gemacht werden, umbenannt werden und an eine bestimmte Position verschoben werden. Das Masterblatt „Schneewittchen“ wird anschließend wieder unsichtbar gemacht.

Schritt für Schritt:

1.) Zugriff auf das (unsichtbare) Blatt „Schneewittchen:

    Dim xlBlatt As Worksheet
    Dim i As Integer
    Dim strBlattname As String
    
    Set xlBlatt = ThisWorkbook.Worksheets("Schneewittchen")

2.) Blatt wird eingeblendet:

    xlBlatt.Visible = xlSheetVisible

3.) Blatt wird vor das erste Blatt geschoben:

    xlBlatt.Copy Before:=ThisWorkbook.Worksheets(1)

4.) Mit Hilfe einer benutzerdefinierten Funktion GibtEsBlattname wird überprüft, welcher Blattname noch nicht existiert, beispielsweise „Schneewittchen 001“:

    i = 0
    Do
        i = i + 1
        strBlattname = "Schneewittchen " & Format(i, "000")
    Loop Until GibtEsBlattname(strBlattname) = False

5.) Das erste Blatt wird umbenannt:

ThisWorkbook.Worksheets(1).Name = strBlattname

6.) Das Masterblatt „Schneewittchen“ wird ausgeblendet:

ThisWorkbook.Worksheets("Schneewittchen").Visible = xlSheetVeryHidden

7.) Das neu erzeugte Blatt wird nach hinten verschoben:

ThisWorkbook.Worksheets(strBlattname).Move After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)

Und: ein Fehler ist die Folge:

Die Move-Methode des Worksheet-Objektes konnte nicht ausgeführt werden.

Der Fehler liegt in folgender Zeile:

xlBlatt.Copy Before:=ThisWorkbook.Worksheets(1)

Welches ist das ERSTE Tabellenblatt? Blatt Nummer 1 oder das erste sichtbare Tabellenblatt. Die Antwort: letzteres: das Blatt wird vor das erste sichtbare Blatt kopiert. Damit ist es anschließend nicht das erste Blatt! Sondern die drei ausgeblendeten Blätter liegen noch weiter links von dem Blatt.

Leider besitzt die Methode Copy kein Objekt, an das das Ergebnis des Kopierens übergeben werden kann.

Also muss man sich „auf die Suche“ nach dem Blatt machen, beispielsweise: durchlaufe alle Blätter und such das Blatt, das „Schneewittchen(2)“ heißt, besser

ThisWorkbook.Worksheets(1).Name Like "Schneewittchen *"

Dann klappt es auch!