Clever-Excel-Forum

Normale Version: Tabellenblätter automatisch mit Datum umbenennen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Guten Morgen,

ich habe eine Frage, da ich noch nicht allzu gut in Umgang mit VBA bin.

Ich habe in Celle "C3" das Datum stehen, welches sich durch eine Formel bei Änderung anpasst. Die Zelle ist formatiert, so dass z. B. statt "01.03.2020", dann "März 20" angezeigt wird. , Nun soll wenn möglich der Tabellenblattname  automatisch danach benannt werden oder wenn nicht automatisch, dann einfach über eine Schaltfläche.

Ich habe zwar eine einfache Variante unter Code des Tabellenblatts eingebaut und es dann mit einen Schaltbutton verknüpft. Der Code sieht so aus:

Sub umbenennen()

ActiveSheet.Name = Range("C2").Value


End Sub


Es klappt auf diese Weise gut, aber er zeigt mir  als Tabellenblattname das ganze Datum an, "01.03.2020". Aber es soll wie in der Celle "März 20" als Name stehen. 

Was muss ich in den Code noch einbauen, damit er das macht?
Besser wäre, wenn der Tabellenname sich automatisch ändert, wenn sich das Datum in Celle "C3" ändert. Hier ist aber noch zu sagen, das ich das datum in Celle "C3" nicht per Hand eintrage, sondern es durch eine Formel geschieht. Wie muss der Code dann aussehen?

Ich bitte um Hilfe, denn ich bin noch nicht gut mit VBA.

Schönen Tag Euch allen und bleibt Gesund
Moin,

so:

Zitat:ActiveSheet.Name = Range("C2").Text
Guten Morgen,

vielen Dank für die  schnelle Antwort. Da hatte ich ja echt eine lange Leitung. Klappt gut jetzt.

Hast Du vielleicht eine Idee, wie das auch automatisch ginge? Wie gesagt das Datum in der Zelle wird durch eine Formel geändert und nicht von Hand.

Schönen Tag noch und bleibt Gesund
Hi Friedrich,

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$2" Then ActiveSheet.Name = Range("C2").Text
End Sub
Hallo,

nur eine Idee ... hier wird abgefragt, ob das Tabellenblatt bereits existiert:


Zitat:Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim worksh As Integer
    Dim worksheetexists As Boolean
    Dim x As Integer
    worksh = Application.Sheets.Count
    worksheetexists = False
    For x = 1 To worksh
        If Worksheets(x).Name = Range("C2").Text Then
            worksheetexists = True
            'Debug.Print worksheetexists
            Exit For
        End If
    Next x
    If worksheetexists = False Then
        'Debug.Print "transformed exists"
        Worksheets.Add after:=Sheets("Tabelle1")
        ActiveSheet.Name = Range("C2").Text
    End If
End Sub

Gruß
Marcus
Code:
Private Sub Worksheet_Activate()
    Name = Format(Date, "mmm yy")
End Sub
Vielen Dank,

der geht natürlich auch super. Den muss ich ja auch zuweisen.

Bin schon richtig zufrieden wie es soweit funktioniert
Nachdem drei verschiedene Vorschläge gekommen sind, wäre es vllt. für die Antworter interessant, welches Makro "natürlich super geht". Wink
Hallo Günter,

das wird wohl an snb gegangen sein. er ist auf etwas eingegangen, was wir übersehen haben:
Code:
Name = Format(Date, "mmm yy")


Gruß
Marcus
Hi Marcus,

das braucht's bei meinem Vorschlag nicht. Exakt wie der TE seine Zelle formatiert hat, wird der entsprechende Text übernommen.
Seiten: 1 2