Hallo zusammen,
ich möchte ein Makro schreiben, welches den Benutzer nach einem Monat fragt (muss im Format MMMM YYYY, also bspw. „Januar 2016“ eingegeben werden) und anschließend ein neues Tabellenblatt erstellt, dass nach diesem Monat benannt wird, aber im Format MMMYY (also bspw. „Jan16“).
Dazu habe ich den Code geschrieben:
Sub neu()
Dim v As String
v = InputBox("Gib ein!")
v = Format(v, MMMYY)
Worksheets.Add.Name = v
End Sub
Allerdings heißt das neue Blatt dann nicht „Jan16“, sondern „01.01.2016“.
Weiß jemand, warum und wie man das Problem behebt?
Danke und Grüße!
Julian
Hallo Julian
Ich glaube, Du musst nur eine Kleinigkeit ändern: Anführungszeichen einsetzen
v = Format(v, "MMMYY")
Wichtig ist, was Du sagst: Der Benutzer darf nur „Monat Jahr“ eingeben, nicht etwa ein Datum. - Als Eingabe-Varianten sind möglich: Januar 2016 / januar 16 / jan 2016 / jan 16
Ich hoffe, das hilft Dir. Grüsse Niclaus
Super, die Anführungszeichen waren es schon!
Bezüglich der MessageBox hab ich nun eine andere Lösung gefunden. Ausgangssituation ist, dass in Spalte A ab Zeile 5 Monate nacheinander aufgelistet sind. Bei Klick auf den Button soll ein weiterer hinzugefügt und ein neues Tabellenblatt erstellt werden (es handelt sich um ein Haushaltsbuch).
Vielleicht hast du ja Lust, auf meinen Code zu schauen und mir Feedback zu geben, ob das auch eleganter geht:
Sub Neuer_Monat()
If Range("A5") = "" Or Range("A6") = "" Or Range("A7") = "" Then
MsgBox "Das automatische Eintragen eines neuen Monats ist noch nicht möglich." & Chr(10) & "Bitte zuerst die Zellen A5, A6 und A7 manuell befüllen und danach diesen Button erneut drücken."
Else
'Neuen Monat eintragen
Range(Range("A5").End(xlDown), Range("A5").End(xlDown).Offset(-2, 0)).Select
Selection.AutoFill Destination:=Range(Range("A5").End(xlDown).Offset(-2, 0), Range("A5").End(xlDown).Offset(1, 0))
Range("A5").End(xlDown).Select
'Neues Worksheet erstellen
Worksheets("Vorlage").Copy Before:=Worksheets("Vorlage")
ActiveSheet.Name = Format(Sheets("Ausgabenübersicht").Range("A5").End(xlDown), "mmmyy")
ActiveSheet.Range("A1").Value = Format(Sheets("Ausgabenübersicht").Range("A5").End(xlDown), "mmmm yyyy")
End If
End Sub
Grüße!
Juli
Grüezi Julian
Das ist so eine Sache mit der Eleganz! Ich verwende heute noch Makros, die ich anfangs der 80er Jahre mit Framework/FRED erstellt hatte - Excel gab es damals noch nicht. Und jedes mal, wenn ich die anschaue, sträuben sich mir die Haare: „Wie kann man auch so umständlich und kompliziert schreiben!“
Aber es funktioniert bestens und nach meinen Wünschen und Bedürfnissen. - Wenn das bei Dir auch zutrifft, dann finde ich das ok.
Viele Grüsse und ein schönes WE Niclaus