Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Name aus der Zelle als Blatt-Name übernehmen





Frage

Hallo, ich möchte den Namen, der in einer Zelle steht, als Blatt-Name übernehmen lassen. Ich habe keine Ahnung, wie das geht, meine Versuche sind leider gescheitert. Der Name, der übernommen werden soll, steht in A2. Ich habe versucht, über "Macro aufzeichnen" das Problem zu lösen, leider ohne Erfolg. Mein bisheriges Ergebniss sieht so aus: Sub Test() ' ' Test Makro ' ' Sheets("Berechnung (2)").Select Sheets("Berechnung (2)").Copy After:=Sheets(9) Sheets("Berechnung (3)").Select Sheets("Berechnung (3)").Name = "Berechnung (3)" Sheets("Berechnung (3)").Select Sheets("Berechnung (3)").Name = "=A2" End Sub Da, wo jetzt "=a2" steht, liegt das Problem. Kann mir jemand helfen? Vielen Dank Gruß Rasful

Antwort 1 von wadspit

Hi,

dies funktioniert, Rnd Funktion nur falls A2 leer ist, denn sonst Fehler:

If ActiveSheet.Cells(2, 1) <> "" Then
Worksheets(ActiveSheet.Name).Name = ActiveSheet.Cells (2, 1)
Else
ActiveSheet.Name = Rnd(4000)
End If




Grüße

Antwort 2 von Beverly

Hi,

es müsste heißen

 Sheets("Berechnung (3)").Name = Range("A2")


Es sind jedoch verschiedene Prüfungen erforderlich, andernfalls läuft der Code auf einen Fehler hinaus:

1. ob die Zelle (bzw. der zu vergebende Name) leer ist (s. Beitrag von wadspit)
2. ob der Name mehr als 31 Zeichen umfasst
3. ob unerlaubte Zeichen vrwendet werden
4. ob eine Tabelle mit diesem Namen schon vorhanden ist.


Sub tabelle_kopieren()
    Dim strTabelle As String
    Dim wsTabelle As Worksheet
    strTabelle = Worksheets("Berechnung (2)").Range("A2")
    If strTabelle = "" Then
        MsgBox "Kein Name in A2 eingetragen"
        Exit Sub
    ElseIf Len(strTabelle) > 31 Then
        MsgBox "Name darf nicht mehr als 31 Zeichen beinhalten"
        Exit Sub
    ElseIf InStr(1, strTabelle, "\") > 0 Then GoTo Verlassen
    ElseIf InStr(1, strTabelle, "/") > 0 Then GoTo Verlassen
    ElseIf InStr(1, strTabelle, "?") > 0 Then GoTo Verlassen
    ElseIf InStr(1, strTabelle, "*") > 0 Then GoTo Verlassen
    ElseIf InStr(1, strTabelle, "[") > 0 Then GoTo Verlassen
    ElseIf InStr(1, strTabelle, "]") > 0 Then GoTo Verlassen
    End If
    For Each wsTabelle In ThisWorkbook.Sheets
        If wsTabelle.Name = strTabelle Then
            MsgBox "Es gibt bereits eine Tabelle " & strTabelle
            Exit Sub
        End If
    Next wsTabelle
    Sheets("Berechnung (2)").Copy After:=Sheets(Sheets.Count)
    ActiveSheet.Name = strTabelle
    Exit Sub
Verlassen:
    MsgBox "Name beinhaltet unzulässiges Zeichen"
End Sub


Ich nehme an, dass die Tabelle immer als letzte eingefügt werden soll? Deshalb Sheets("Berechnung (2)").Copy After:=Sheets(Sheets.Count). Falls du jedoch wirklich immer nach dem 9. Blatt einfügen willst, kannst du das ja zurückändern in 9.

Bis später,
Karin

Antwort 3 von Rasful

Hallo wadspit und Beverly,
vielen Dank für eure schnellen Antworten. Ich werde versuchen, eure Vorschläge bzw. Lösungen in die Tat unzusetzen. Falls ich Problem haben sollte, ich bin kein Profi (merkt man), wende ich mich vertrauensvoll An euch. Nochmals vielen, vielen Dank.
Gruß aus Bayern

Rasful

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: