Automatisiertes Erstellen von Tabellenblättern

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Automatisiertes Erstellen von Tabellenblättern
von: Karl Beckmann
Geschrieben am: 16.07.2015 10:41:30

Hallo zusammen,
weiß jemand ob man in einer neuen Arbeitsmappe Tabellenblätter automatisch Anlegen und mit Tabellenblatt-Namen versehen kann.
z.B. für August 2015 je Datum (01.08.2015-31.08.2015) 1 Tabellenblatt
Vielen Dank vorab.

Bild

Betrifft: AW: Ja, weiß ich, es geht owT
von: Bernd
Geschrieben am: 16.07.2015 10:59:32


Bild

Betrifft: AW: Automatisiertes Erstellen von Tabellenblättern
von: Klexy
Geschrieben am: 16.07.2015 11:14:12
Voraussetzung:
in A1 steht die gewünschte Jahreszahl
in A2 steht der gewünschte Monat (als Zahl)

Sub neues_Tabellenblatt_Monat()
Dim jahr As Integer, monat As Integer
Dim mAnfang As Variant, mEnde As Variant
    iJahr = Range("A1")
    iMonat = Range("A2")
    mAnfang = DateSerial(iJahr, iMonat, 1)
    mEnde = DateSerial(iJahr, iMonat + 1, 0)
    Worksheets.Add after:=ActiveWorkbook.Sheets(Sheets.Count)
    ActiveSheet.Name = mAnfang & " - " & mEnde
End Sub


Bild

Betrifft: AW: @Klexky
von: Bernd
Geschrieben am: 16.07.2015 11:21:05
Hi Klexy,
warum postest Du eine Lösung, welche überdies sicher nicht die richtige ist, wo die Frage nur lautete:
"weiß jemand ob..."
Warum ist Deine Lösung vermutlich falsch?
Er/Sie schrieb:
"für August 2015 je Datum (01.08.2015-31.08.2015) 1 Tabellenblatt"
d.h. für mich, je Tag ein Tabellenblatt (steht ja je Datum)
mfg Bernd

Bild

Betrifft: AW: Komm schon...
von: Michael (migre)
Geschrieben am: 16.07.2015 11:33:25
Bernd,
...so aufspielen musst Du Dich diesbezüglich nicht. Ja, die Fragestellung wurde wieder einmal unglücklich gewählt, und Du hast prinzipiell recht, dass es für alle Helfer (und vermutlich auch zukünftige Hilfe-Suchenden) einfacher ist, wenn Fragen (und Antworten!!!) präzise, verständlich und "auf den Punkt" formuliert werden.
Aber geht's in diesem Forum (in jedem Hilfe-Forum?!) nicht einfach darum anderen zu helfen, womöglich selbst dazuzulernen und womöglich einfach tolle Problemlösungen zu entwickeln?
Du bist selbst auf tollem Excel-Niveau unterwegs, hilfst immer wieder Leuten - das passt doch, oder? Und Du hast Deinen Punkt (sarkastisch) klargemacht, dass die Frage unglücklich formuliert war. Aber andere Helfende deswegen vor den Kopf zu stoßen, finde ich unnötig. Ja, ich glaube auch, dass hier die Lösung eher eine Schleife verlangt - aber hier nehm ich mich selbst an der Nase: habe schon oft genug Dinge in der originalen Frage überlesen oder falsch verstanden; das passiert eben. Ein Forum ist ja deshalb auch ein dialogisches Medium.
Also: Setze Deine Zeit, Deine Erfahrung und Dein Wissen weiterhin (wie bisher) dazu ein Anderen zu helfen und mächtige Lösungen zu produzieren; aber vielleicht tut uns allen (ich schließe mich selbst nicht aus) weniger Sarkasmus ganz gut ;-).
LG
Michael

Bild

Betrifft: AW: Komm schon...
von: Bernd
Geschrieben am: 16.07.2015 19:22:52
Hallo Michael!
Danke für Deine Rüge, werde sie annehmen. Aber aufgrund der Fragestellung, und des angegebenen Excel Level des Beitragerstellers als "Profi", konnte ich mir meinen Beitrag eben nicht verkneifen.
Sollte ursprünglich nur der Erheiterung dienen, da auch ich eine Lösung Präsentieren hätte können.
Aber dank Dir, Klexy sowie Rudi hat er auch so die Lösung gefunden.
Dann wünsche ich weiterhin frohes schaffen und alles Gute weiterhin,
mfg Bernd

Bild

Betrifft: AW: Schon klar, alles gut...
von: Michael (migre)
Geschrieben am: 17.07.2015 09:12:08
Hallo Bernd,
...ist mir schon klar, dass man sich (ich genauso wenig) oft gewisse Äußerungen nicht verkneifen kann.
Aber wir sind ja im Forum um uns weiterzuentwickeln - ob jetzt fachlich in Excel oder in unserer gemeinsamen Kommunikation; daher mein Beitrag - eine strenge Rüge soll's nicht sein ;-).
Schönes Wochenende und liebe Grüße
Michael

Bild

Betrifft: AW: @Klexky
von: Klexy
Geschrieben am: 16.07.2015 14:35:46
Du hast schon irgendwie recht, aber selbst wenn ich es falsch verstanden haben sollte, ist dies der richtige Weg. Eine Angleichung auf 1 Blatt pro Tag ist nur noch Fleißarbeit.

Bild

Betrifft: AW: @Klexky
von: Bernd
Geschrieben am: 16.07.2015 19:26:38
Hi Klexy!
so wie Michel vermutete, war es eben ein wenig sarkastisch von mir, tut Leid.
Bin selber über jede Hilfe hier immer sehr Dankbar und habe stets eine Lösung, Dank Euch allen, erhalten.
Also Sorry für meinen Beitrag an Dich, Du wolltest nur helfen so wie ich immer wobei auch ich, nicht immer am richtigen Weg war.
mfg Bernd

Bild

Betrifft: AW: Automatisiertes Erstellen von Tabellenblättern
von: Michael (migre)
Geschrieben am: 16.07.2015 11:37:01
Hallo Karl!
Hier meine Version (Makro muss in ein allgemeines Modul: in Excel [Alt + F11], es öffnet sich der VBA-Editor, Einfügen, Modul, den u.a. Code hineinkopieren - kannst Du dann über Makros aufrufen):

Sub BlaetterAnlegenNachAnzahlTageInMonat()
    Dim Wahl As Variant
    Dim Datum As Date
    Dim Tage As Integer
    Dim i As Integer
    
    Wahl = InputBox("Gewünschtes Datum eingeben. Tabellenblätter werden" _
        & " für die Anzahl an Tagen des Monats angelegt." & vbCrLf & vbCrLf _
        & " Wird kein Datum eingegeben, wird aktueller Monat gewählt!", _
        "Tabellenblätter nach Tagen anlegen!")
    
    Select Case Wahl
        Case Is = vbCancel
            Exit Sub
        Case Is = 0
            Datum = Date
        Case Is = IsDate(Wahl)
            Datum = Wahl
        Case Else
            Datum = Date
    End Select
    Tage = DateSerial(Year(Datum), Month(Datum) + 1, 1) - _
                DateSerial(Year(Datum), Month(Datum), 1)
    
    For i = 1 To Tage
        Worksheets.Add after:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = Format(DateSerial(Year(Datum), Month(Datum), i), "dd.mm.yyyy")
    Next
End Sub
Passt?
LG
Michael

Bild

Betrifft: AW: Erratum...
von: Michael (migre)
Geschrieben am: 16.07.2015 11:41:24
Hallo,
...habe etwas in meinem o.a. Code übersehen.
[vbCancel] muss mit [""] getauscht werden, sonst funktioniert der Abbruch nicht korrekt.
Sorry.
Lg
Michael

Bild

Betrifft: AW: Erratum...
von: Karl Beckmann
Geschrieben am: 16.07.2015 14:42:21
Danke für die Antwort.
Klappt Super. Habe jetzt nur noch ein Problem: Da ich mich mit VBA nicht auskenne, wie kann das ganze so speichern das ich es für neu zu erstellende Arbeitsmappen auch nutzen kann?

Bild

Betrifft: AW: Persönliche Makro-Arbeitsmappe
von: Michael (migre)
Geschrieben am: 16.07.2015 16:34:49
Hallo Karl!
Um das Makro (bzw. auch die Version von Rudi, die eleganter ausgeführt ist, allerdings etwas anders arbeitet) immer bei der Arbeit in Excel zur Verfügung zu haben, speicherst Du das Makro in Deine persönliche Makroarbeitsmappe
Ich gehe davon aus, dass diese noch nicht existiert. Öffne Excel... Starte den Makro-Rekorder (Makro aufzeichnen)... Wähle aus "Makro speichern in: Persönliche Makroarbeitsmappe"... Wähle [OK]... Beende gleich wieder die Makro-Aufzeichnung [Stopp]
Betätige dann [Alt + F11], das bringt Dich wieder in den VBA-Editor. Im linken Bildbereich solltest Du eine Explorer-Struktur sehen. Erweiterte [Klick auf das +] den Punkt Modul unter VBAProjekt(PERSONAL.XLSB), DoppelKlick auf [Modul 1]... Ersetze dort den Text von

Sub Makro1()... bis End Sub
mit Rudis bzw. meinem Code.
Passt?
LG
Michael

Bild

Betrifft: AW: Automatisiertes Erstellen von Tabellenblättern
von: Rudi Maintaire
Geschrieben am: 16.07.2015 11:44:05
Hallo,
Jahr in A1; Monat in B1:

Sub BlaetterRein()
  Dim i As Long
  Application.ScreenUpdating = False
  For i = DateSerial([a1], [b1], 1) To DateSerial([a1], [b1] + 1, 0)
    Worksheets.Add(after:=Sheets(Sheets.Count)).Name = Format(i, "DD.MM.YYYY")
  Next i
End Sub

Gruß
Rudi

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Automatisiertes Erstellen von Tabellenblättern"