Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zeitraum in neuem Tabellenblattnamen mit Makro fortschreiben
#1
Hallo,

mit einem Makro möchte ich den Namen eines Tabellenblattes ändern
und verwende bisher:
...
ActiveSheet.Name = Format(Date, "MMM YYYY") + " - " + Format(DateSerial(Year(Now()), Month(Now()) + 1, 1), "mmm yyyy")
...

Ich erhalten dann: Dezember 2015 - Januar 2016

Wie muss ich den Code ändern bzw. das Makro ergänzen,
damit bei Neuanlage eines Tabellenblattes der folgende Zeitraum als Name
eingetragen wird, also dann

Januar 2016 -  Februar 2016 ?

Bisher erhalte ich bei der Neuanlage mit diesem Makro die sinngemäße Fehlermeldung, dass für ein neues Tabellenblatt
kein bereits vorhandener Name verwendet werden kann.

Weiß jemand Rat?

Bin für jede Hilfe dankbar!

Steini
Antworten Top
#2
Hallo Steini,

starte das Makro frühestens wieder am 1.1.2016. Smile

Gruß Uwe
Antworten Top
#3
Moin,

Alternative: Stelle das Systemdatum 1 Monat vor. Blush
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top
#4
Hallo Günter, hallo Uwe,

vielen Dank für eure Hinweise.

Mit dem Makro soll stets ein neues Tabellenblatt mit der Folgeperiode angelegt werden:

Also Anlage neues Tabellenblatt mit Namen Dezember 2015 - Januar 2016,
nächstes neues Tabellenblatt mit Namen Januar 2016 - Februar 2016 usw. usf.

Mein Gedanke ist, dass mit dem Aufruf des Makros auf den Zeitraum des letzten Blatts Bezug genommen wird
und die Monate dort um jeweils eins erhöht werden.

Wäre dies umsetzbar (bspw. mit dateadd?, Bezug mit previous??)?

Besten Dank schonmal

Steini
Antworten Top
#5
Hallo Steini,

so sollte es gehen:

Code:
Sub NeuesBlattHinzufuegen()
  Dim datDatum As Date
  Dim varDatum As Variant
  varDatum = Split(Sheets(Sheets.Count).Name, " - ")
  If UBound(varDatum) = 0 Then
    datDatum = Date
  Else
    If IsDate(varDatum(1)) Then
      datDatum = varDatum(1)
    Else
      datDatum = Date
    End If
  End If
  Sheets.Add After:=Sheets(Sheets.Count)
  Sheets(Sheets.Count).Name = Format(datDatum, "MMM YYYY") & " - " & Format(DateSerial(Year(datDatum), Month(datDatum) + 1, 1), "MMM YYYY")
End Sub

Gruß Uwe
Antworten Top
#6
Hallo Uwe,

vielen Dank für diesen Ansatz. Da ich noch eine ganz alte Excel-Version verwende - Excel97 -, kann ich ihn
leider nicht umsetzen, da die Funktion "split" dort noch nicht zur Verfügung steht.

Allerdings habe ich nun in einem Makro die Daten des Zeitraumes als jeweils eigene Variable berücksichtigt
und kann nun damit die Daten des vorherigen Tabellenblattes in das aktuelle Blatt schreiben.

Code:
Option Explicit

Sub Folgedatum()
   Dim datum1 As Date
   Dim datum2 As Date
   Dim blattname As String
   With ActiveSheet
      If .Index > 1 Then
         blattname = .Previous.Name
      End If
   End With
   datum1 = Left(blattname, 8)
   datum2 = Right(blattname, 8)
   ActiveSheet.Name = datum1 & "bis" & datum2
End Sub

Was noch nicht klappt ist, die Folgedaten anstelle der Daten des vorherigen Blattes zu setzen,
also jeweils den Folgemonat abzubilden.

Bspw.
datum1=Format(DateSerial(Year(Now()), Month(Now())+1, 1), "mmm yyyy")
funktioniert nicht.

Wie müsste der Code geändert werden, damit immer der Folgemonat gesetzt wird?

Freue mich über jeden Tipp.

Steini
Antworten Top
#7
Hallo,

wie müsste der folgende Code geändert werden,
damit die Daten (Variablen datum11 und datum21) im Format mmm yyyy (also bsp. Dez 2015) angezeigt werden?

Code:
Option Explicit

Sub Folgedatum()
   Dim datum1 As Date
   Dim datum2 As Date
   Dim datum11 As Date
   Dim datum21 As Date
   Dim blattname As String
   With ActiveSheet
      If .Index > 1 Then
         blattname = .Previous.Name
      End If
   End With
   datum1 = Left(blattname, 10)
   datum2 = Right(blattname, 10)
   datum11 = DateAdd("m", 1, datum1)
   datum21 = DateAdd("m", 1, datum2)
   ActiveSheet.Name = datum11 & " bis " & datum21
End Sub

Danke

Steini
Antworten Top
#8
Hallo,

habe eine Lösung gefunden.

Vielen Dank für jeden Hinweis.

Steini
Antworten Top
#9
Hallöchen,

der Vollständigkeit halber noch die Lösung.

Format(datum11, "mmm yyyy")
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#10
Hallo,

auch der Vollständigkeit halber:

Code:
Public Function Split(strText As String, strDelimiter As String) As Variant
 'simuliert die ab E2000 verfügbare Funktion Split für E97
 'Kuwer 201512
 Dim iTemp As Long, varTemp As Variant
 iTemp = (Len(strText) - Len(Application.WorksheetFunction.Substitute(strText, strDelimiter, ""))) / Len(strDelimiter)
 ReDim varTemp(iTemp)
 If iTemp = 0 Then
   varTemp(0) = strText
 Else
   For iTemp = 0 To UBound(varTemp) - 1
     varTemp(iTemp) = Mid(strText, 1, InStr(1, strText, strDelimiter) - 1)
     strText = Mid(strText, Len(varTemp(iTemp)) + Len(strDelimiter) + 1)
   Next iTemp
   varTemp(iTemp) = strText
 End If
 Split = varTemp
End Function

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Steini
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste