Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
236to240
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
236to240
236to240
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Blattbenennung mit Datum

Blattbenennung mit Datum
30.03.2003 16:44:00
MikeS
Hallo Leute,

mit nachfolgendem Code verändere ich den Namen des Sheet(1)
in das aktuelle Datum im Format "mmmyy" = "Mrz03".



Sub Blattbenennung()
    'Tabelle(1) umbenennen in "Mrz03"
    Sheets(1).Name = Format(Date, "mmmyy")
End Sub


Nun möchte ich die Tabelle "Muster" kopieren und als letztes Blatt einfügen. Das klappt problemlos.

Mein Problem liegt bei der Blattbenennung. Ich möchte als Namen für des neue Blatt "Apr03", das entspricht letztes Blatt ("Mrz03") +1Monat.

Zu beachten wäre noch wenn z.B. das letzte Blatt "Dez03" ist,
daß sowohl der Monat als auch das Jahr erhöht wird.

Bekomme ich das nur über Zerlegung des Blattnamens und Select Case hin, oder geht das eleganter (und kürzer).

Ich krieg`s einfach nicht hin.

Vielen Dank und einen schönen Sonntag
Ciao MikeS

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Blattbenennung mit Datum
30.03.2003 17:24:55
andre

hallo mike,
habe hier mal ein minimakro für eine monatsliste:

für deine zwecke musst du es ummodeln.
gruss andre

leider noch nicht gelöst
30.03.2003 17:48:43
MikeS

Hi Andre,

habe versucht Dein Makro meinen Bedürfnissen anzupassen.

Leider ohne Erfolg, trotzdem danke.

Ciao MikeS

Re: leider noch nicht gelöst
30.03.2003 17:57:10
andre

hallo mike,
bei mir gehts so:

gruss andre

Re: leider noch nicht gelöst
30.03.2003 18:10:39
MikeS

Hi Andre,

funktioniert super, doch mein Problem liegt hier:

Wie prüfe ich den letzten Blattnamen z.B. "Dez03" ?

Das neue eingefügte Blatt soll dann +1Monat = "Jan04" heißen.

Vielleicht noch `ne Idee???

Dankeschön, ciao MikeS

Anzeige
Re: leider noch nicht gelöst
30.03.2003 18:20:05
andre

hallo mike,
das kommt automatisch. stelle mal statt To 6 To 15 ein = anzahl der monate, und du siehst den jahreswechsel.
statt Val(Format(Date, "MM")) kannst du natürlich den startmonat direkt eintragen, und bei j das startjahr.
gruss andre

Re: leider noch nicht gelöst
30.03.2003 19:15:03
MikeS

Hi Andre,

danke für Deine Nachricht. Ich verstehe natürlich was Du meinst,
doch habe ich mich wohl falsch ausgedrückt.

Nehmen wir mal an ich habe eine Arbeitsmappe mit 2Tabellen.
Tabelle1 "Muster" und Tabelle2 "Mrz03" .

Nun kopiere ich per nachfolgendem Code:


Sub NeuenMonatHinzufügen()
    Dim i%
    i = Sheets.Count
    Sheets("Muster").Copy after:=Sheets(i)
    ActiveSheet.Name = "Apr03" 'letztes Blatt +1 Monat
End Sub


das Blatt "Muster" und füge es am Ende ein.

Da der bisher letzte Blattname "Mrz03" ist, soll das neue
Blatt "Apr03" heißen.

Ich möchte mittels VBA den letzten Blattnamen prüfen und den neuen Blattnamen nicht (wie im Code ersichtlich "Apr03") händisch
eingeben, sondern automatisch ermitteln lassen.

Hoffentlich war meine Erklärung aussagefähig genug.

Danke, MikeS




Anzeige
Re: leider noch nicht gelöst
30.03.2003 19:44:59
andre

hallo mike,
dann untersuche die blattnamen etwa so:

jahr=right(Worksheets(Sheets.Count).Name, 2)
For i = 1 To 12
If Left(Worksheets(Sheets.Count).Name, 3) = Format(CDate("1." & i & ".2003"), "mmm") Then
monat = i + 1
if monat = 13 then monat = 1: jahr = jahr+1
End If
Next i

damit wird vom letzten blattnamen der monat+1 genommen. ich hab nur grade mit dem jahr einen klemmer, da nimmt er ein anderes blatt. teste es mal bei dir, vielleicht gehts.

gruss andre

Lösung
01.04.2003 21:09:12
MikeS

Hi Andre,

nach einigem rumprobieren hab ich's lösen können.

Leider funktioniert der Code nur auf meiner Arbeit (Office97).

Zuhause (OfficeXP) hängt er sich immer bei der Codezeile

AlterBlattname auf???

Hier die Prozedur:



Option Explicit

Sub NeuerName()
      Dim As Byte
      Dim Tag$, Monat$, Jahr$
      Dim AlterBlattname$, NeuerBlattname$
      
      'Anzahl Blätter
      i = Worksheets.Count
      
      'Zerlegung AlterBlattname
      Tag = 1
      Monat = Mid(Worksheets(i).Name, 1, 3)
      Jahr = Right(Worksheets(i).Name, 2)
      
      'Zuweisung Datum für AlterBlattname
      AlterBlattname = CDate(Tag & "." & Monat & "." & Jahr)
      
      'NeuerBlattname = AlterBlattname +1Monat
      NeuerBlattname = Format(DateAdd("m", 1, AlterBlattname), "mmmyy")
      
      'Musterblatt kopieren und am Ende einfügen
      Worksheets("Muster").Copy after:=Worksheets(i)
      
      'Blatt neuen Namen zuweisen
      ActiveSheet.Name = NeuerBlattname
End Sub


Ciao MikeS

P.S. Nochmal vielen Dank für Deinen Lösungsansatz


Anzeige
Re: Lösung
01.04.2003 21:45:59
andre

hallo mike,
das problem ist, dass es die variablen nicht mit den bezeichnungen des letzten blattes füllt, sondern mit dem ersten - weil es genau verkehrt herum zählt. warum kann ich gerade auch nicht sagen.
gruss andre

Re: Lösung
02.04.2003 22:03:41
MikeS

Hi Andre,

warum läuft der Code dann unter 97 + 2000 und unter XP nicht???

Ciao MikeS

Re: Lösung
04.04.2003 19:03:12
andre

hallo mike,
bei mir gehts unter 2000 nicht.
gruss andre

Re: Lösung
05.04.2003 16:24:17
MikeS

Hi Andre,

mittlerweile habe ich eine andere Lösung gefunden,
die unter Excel97, 2000 & XP läuft.

Das Problem lag bei der Blattnamenauslesung, sodaß ich
bei der Blattbenennung auf das Format "mmyy" übergegangen
bin.

Probier's doch mal aus und gib mir Rückinfo.

Hier der Code:



Private Sub CommandButton3_Click()
      Dim As Byte
      Dim Tag$, Monat$, Jahr$
      Dim AlterBlattname As Date, NeuerBlattname As Date
      
      'Anzahl Blätter
      i = Worksheets.Count
      
      'Zerlegung AlterBlattname
      Tag = "01"
      Monat = Left(Worksheets(i).Name, 2)
      Jahr = Right(Worksheets(i).Name, 2)
      
      'Datum von AlterBlattname
      AlterBlattname = CDate(Tag & "." & Monat & "." & Jahr)
      
      'NeuerBlattname = AlterBlattname +1Monat
      NeuerBlattname = DateAdd("m", 1, AlterBlattname)
      
      'Musterblatt kopieren und am Ende einfügen
      Worksheets("Muster").Copy after:=Worksheets(i)
      
      'Blatt neuen Namen zuweisen
      ActiveSheet.Name = Format(NeuerBlattname, "mmyy")
      
      'Blattname in Zelle D1 schreiben
      [D1] = Format(NeuerBlattname, "mmmm") & " " & Format(NeuerBlattname, "yyyy")
      
      'Register hinzufügen (Caption = NeuerBlattname)
      UserForm1.TabStrip1.Tabs.Add.Caption = Format(NeuerBlattname, "mmmyy")
      
      'Neues Register aktivieren
      UserForm1.TabStrip1.Value = UserForm1.TabStrip1.Tabs.Count - 1
      
End Sub


Ciao MikeS

Anzeige
Re: Lösung
05.04.2003 16:46:26
andre

hallo mike,

bei mir gehts trotzdem nicht - siehe problembeschreibung. ich habe 5 blätter, und er nimmt bei worksheets(5) den namen vom 3. blatt.
nachdem ich mit deinem makro was eingefügt habe, gehts aber. ich habe nur den teil mit dem userform auskommentiert.
gruss andre

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige