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
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
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.
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
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
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