Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Excel Kalender erstellen

VBA Excel Kalender erstellen
09.12.2013 10:37:26
Eric
Hallo Miteinander ich bin Neu hier und hätte ein kleines Problem was ich gern lösen würde.Ich würde gern für nächstes Jahr (und kommende Jahre) einen Kalender erstellen wollen womit ich mit Hilfe eines Commantbutton einen Kalender erstellen kann in dem Wochenende Markiert wird wie auch Feiertage (Sachsen) und ich eine Tabelle oder so hinderlegen kann wo ich noch Berufsschule,Urlaub und so eintragen kann und er sie mit in den Kalender einträgt.Ich weiß das es relativ knifflich zusammengewürfelt bekommt aber zum Schluss will ich damit erreichen das nur der Commantbutton gedrückt wird und er sich alle weiteren Tagen Sucht und er mir zum Schluss den Kalender ausspuckt wo alle hinderlegten Informationen drin sind.Bin wirklich am Verzweifeln da ich über eine Woche jeden Tag dran rumtüfftle aber, ich denke mich nur im Kreis zu drehen.Hier meine bisherigen Ergebnisse leider kommt Laufzeitfehler 1004 Anwendungs-oder Objektdefinierter Fehler.Der Debugger zeigt mir an das an dieser Zeile was faul ist.
With Worksheets("Kalender").Range("A1;L32") = Worksheets("Kalender").Cells = "bytMonth"
Habe wirklich noch nicht groß mit VBA gearbeitet bis auf jetzt für den Kalender also bitte ich höflichst um Verzeihung falls Anfängerfehler aufdrehten.Aber würde mich wirklich sehr freuen wenn mir jemand helfen kann.Denn ich will das Projekt zuende bringen und nicht jetzt wo so viel reininvestiert wurde an Zeit einstampfen. :(
https://www.herber.de/bbs/user/88437.xlsm

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Excel Kalender erstellen
09.12.2013 10:43:40
Eric
Hier ist noch ein weitere Meldung von mir das ist mein aktuellster Arbeitsstand.Also bitte nicht das obere nehmen sondern das hier.Sorry.

Die Datei https://www.herber.de/bbs/user/88438.xlsm wurde aus Datenschutzgründen gelöscht


Anzeige
AW: VBA Excel Kalender erstellen
09.12.2013 11:21:53
KlausF
Hallo Eric,
statt With Worksheets("Kalender").Range("A1;L32")
With Worksheets("Kalender").Range("A1:L32")
also Semikolon gegen Doppelpunkt tauschen.
Gruß
Klaus

AW: VBA Excel Kalender erstellen
09.12.2013 11:26:39
Eric
Ich habs geändert und zumindest dieser Fehler ist behoben, vielen Dank.Manchmal sind auch die kleinen Dinge im Leben ganz groß.Nun kommt aber der fehler Laufzeitfehler 7 Nicht genügend Speicher.Wie ist das Gemeint und würde mich auch sehr freunen wenn noch weitere Teile des Projektes lösungen dafür gefunden werden.Würde mich auch schon für einige Gedenkhilfen freuen damit ich sie vielleicht auch lösen kann.

Anzeige
AW: VBA Excel Kalender erstellen
09.12.2013 11:22:24
Klaus
Hi Eric,
Möchtest du explizit Hilfe in VBA? Oder nur einen dynamischen Kalender?
Ich frage, denn dies ist für mich eine klassische Formelaufgabe, ich sehe nicht wozu das VBA benötigt. Holzweg?
Du brauchst eine dynamische Feiertagsliste für ein Jahr (gibt es haufenweise im Web, ich kann auch eine hochladen). Da kannst du auch deine eigenen "Feiertage" oder Sachsen-Spezifische Tage eintragen.
Den Kalender erstellst du einmalig per Hand, dynamisch auf das Jahr. Die Wochenenden markierst du mit der bedingten Formatierung. Die Kalenderwochen kommen per &WENN(...) dazu. Auf die Feiertagsliste beziehst du dich mit SVERWEIS(Datum;...)
Ich hätt da jetzt zwei, drei Spalten pro Datum gewählt (für die Übersicht). Könnte zwar auch alles per Formel in eine Zelle quetschen, aber dann werden die Formeln drei Kilometer lang .... ist das von dir gezeigte Muster ein Pflicht-Layout?
Grüße,
Klaus M.vdT.

Anzeige
AW: VBA Excel Kalender erstellen
09.12.2013 11:34:39
Eric
Das Zweite wäre so gesehen eine Art Zwangs Layout,aber solang es auf eine Seite passt und die Tabelle alle Monate beinhaltet und nicht jeder Monat einzeln ist es flexipel.Denn es geht mir darum:
VBA Script zum Erstellen des Kalenders in Tabellenblatt
Angabe Wochentag und Wochennummer, Feiertage (berechnet)
Wählbar solle folgende Angaben eingetragen werden können:
- Jahr
- Berufsschulplan,Urlaub,
Vorgabe in eigenem Tabellblatt

Anzeige
HINWEIS
09.12.2013 11:44:51
AndrRo
... die Kalenderwochen sind bei deiner Berechnung nicht nach DIN 1355.
gruss
AndrRo

Anzeige
AW: VBA Excel Kalender erstellen
09.12.2013 11:49:30
Eric
Vielen Vielen Herzlichen Dank.Kenne mich nicht so gut aus nur wo und wie kann ich jetzt meine Feiertage und sonstigen Termine dort mit "einschieben".Bitte wirklich um großes Verständnis das ich bis vor diesem kleinen "Projekt" noch nie überhaupt was von VBA in Excel wusste, das es das gibt.Würde mich wirklich sehr freuen wenn noch dieses "kleine" Problem gelöst werden könnte oder zumindest Tips wie ich es lösen könnte.Denn hab davon leider kaum Ahnung :( (Schähmend).

Anzeige
AW: VBA Excel Kalender erstellen
09.12.2013 12:32:06
Eric
Wie kann ich die Feiertage in den Kalender "einbauen"?

AW: VBA Excel Kalender erstellen
09.12.2013 13:20:25
AndrRo
Es gibt 2 Arten von Feiertage,
Einmal die an einen Festen Tag gebunden sind:
Heiligabend, Tag der Einheit
Diese kannst du mit Dateserial(varyear, 12, 24) abfragen
und die ich nach Ostern richten:
Karfreitag, Pfingsten
Um den Ostersonntag zu errechnen gibt es z. Bsp die Funktion:
Public Function Ostersonntag( _
Optional ByVal Jahr As Integer _
) As Variant
Dim d1 As Integer
Dim d2 As Integer
Dim d3 As Integer
Dim d4 As Integer
'Formel nach Gauss gilt 1583 - 8202
If Jahr = 0 Then Jahr = Year(Now)
If Jahr  8202 Then _
Err.Raise 5 'Invalid argument'
'Berechnung
d1 = (8 * (Jahr \ 100) + 13) \ 25 - 2
d2 = (Jahr \ 100) - (Jahr \ 400) - 2
d1 = (15 + d2 - d1) Mod 30
d3 = 2 * (Jahr Mod 4) + 4 * (Jahr Mod 7)
d4 = (d1 + 19 * (Jahr Mod 19)) Mod 30
If d4 = 29 Then
d4 = 28
ElseIf d4 = 28 Then
If (Jahr Mod 19) > 10 Then d4 = 27
End If
d3 = (6 + d2 + d3 + 6 * d4) Mod 7
'Berechnung Des Datums (ausgehend vom 22.3.)
Ostersonntag = DateSerial(Jahr, 3, 22 + d4 + d3)
End Function
Mit Ostersonntag(varYear) erhält du den das Datum für den Ostersonntag im Jahr
dann kannst du mit Ostersonntag(varYear) + 1 für (Ostermontag) abfragen.
gruss
AndrRo

Anzeige
AW: VBA Excel Kalender erstellen
09.12.2013 14:49:08
Eric
Und wie kann ich die beiden "Urfeiertage",Andere Feiertage wie Maifeiertag,Wiedervereinigung u.s.w oder auch eigene Termine (Urlaub,Schulung) wäre das möglich und wie kann ich diese Formeln in den korregierten Kalender einbauen?

AW: VBA Excel Kalender erstellen
09.12.2013 16:14:43
AndrRo
Diese Formel wird einfach in einen Modul abgelegt. Dadurch steht dir die Funktion Ostersonntag(Jahr) zur Verfügung. Die von Ostern abhängigen Feiertage und genauen Abstände zu Ostersonntag findest du im Internet.
Du kannst eine Abschnitt "Tage aufbereiten" erweitern und die Feiertage abfragen:
select case DateSerial(varYear, bytMonth, bytDay)
case DateSerial(varYear, 12, 24)
.Interior = 3 'Heiligabend
case DateSerial(varYear, 10, 3)
.Interior = 4 'Tag der Einheit
Case Ostersonntag(varYear)
.Interior = 4 'Ostersonntag
case Ostersonntag(varyear)-2
.Interior = 4 'Karfreitag
etc...
end select
Soweit zu den Feiertagen, die werden EINZELN abgefragt.
Urlaub und Seminare sind Jahr für Jahr für Jahr verschieden und weitern meistens in Von-Bis-Bereichen angegeben. Das würde ich nicht im VBA-Code hinterlegen.
gruss
AndrRo

Anzeige
AW: VBA Excel Kalender erstellen
09.12.2013 16:14:50
AndrRo
Diese Formel wird einfach in einen Modul abgelegt. Dadurch steht dir die Funktion Ostersonntag(Jahr) zur Verfügung. Die von Ostern abhängigen Feiertage und genauen Abstände zu Ostersonntag findest du im Internet.
Du kannst eine Abschnitt "Tage aufbereiten" erweitern und die Feiertage abfragen:
select case DateSerial(varYear, bytMonth, bytDay)
case DateSerial(varYear, 12, 24)
.Interior = 3 'Heiligabend
case DateSerial(varYear, 10, 3)
.Interior = 4 'Tag der Einheit
Case Ostersonntag(varYear)
.Interior = 4 'Ostersonntag
case Ostersonntag(varyear)-2
.Interior = 4 'Karfreitag
etc...
end select
Soweit zu den Feiertagen, die werden EINZELN abgefragt.
Urlaub und Seminare sind Jahr für Jahr für Jahr verschieden und weitern meistens in Von-Bis-Bereichen angegeben. Das würde ich nicht im VBA-Code hinterlegen.
gruss
AndrRo
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Excel Kalender erstellen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.
  2. Lege die Struktur deines Kalenders fest:
    • Spalte A für die Tage.
    • Spalte B für die Wochentage.
    • Spalte C für die Kalenderwochen.
  3. Füge einen CommandButton hinzu:
    • Wechsle in den Entwicklermodus und füge einen CommandButton in dein Arbeitsblatt ein.
  4. Erstelle VBA-Code für den Kalender:

    • Klicke mit der rechten Maustaste auf den CommandButton und wähle "Code anzeigen".
    • Füge folgenden Code ein:
    Sub ErstelleKalender()
       Dim i As Integer
       Dim Jahr As Integer
       Jahr = InputBox("Bitte Jahr eingeben:")
    
       For i = 1 To 12
           ' Hier kommen die Berechnungen für die Monate
           ' Feiertage und Wochenenden können hier markiert werden
       Next i
    End Sub
  5. Markiere Feiertage und Wochenenden:
    • Nutze die bedingte Formatierung, um Wochenenden und Feiertage hervorzuheben.
    • Beispiel: Füge eine Regel hinzu, die Samstage und Sonntage rot einfärbt.
  6. Füge eine Feiertagsliste hinzu:
    • Erstelle eine separate Tabelle mit Feiertagen und verlinke diese in deinem VBA-Code.

Häufige Fehler und Lösungen

  • Laufzeitfehler 1004:

    • Ursache: Überprüfe, ob du das richtige Range-Format verwendest. Ändere Range("A1;L32") in Range("A1:L32").
  • Laufzeitfehler 7 (Nicht genügend Speicher):

    • Ursache: Überprüfe, ob du genügend RAM zur Verfügung hast oder ob die Schleife zu viele Iterationen hat.

Alternative Methoden

  • Excel-Formeln:

    • Du kannst auch einen dynamischen Kalender erstellen ohne VBA. Nutze Formeln wie WENN und SVERWEIS, um Feiertage und Wochenenden zu markieren.
  • Kalender-Generator:

    • Es gibt verschiedene Kalender-Generatoren für Excel, die dir helfen, einen Excel-Jahreskalender zu erstellen.

Praktische Beispiele

  • Monatskalender erstellen:

    • Für einen Excel-Monatskalender erstellen kannst du eine Tabelle mit den Tagen des Monats und den Wochentagen erstellen. Nutze Formeln, um die Wochentage automatisch auszufüllen.
  • Urlaubs- und Schulungsplan:

    • Erstelle ein separates Blatt für Urlaub und Schulungen und verlinke diese in deinem Kalender, um eine Übersicht zu erhalten.

Tipps für Profis

  • Nutzung von Arrays:

    • Verwende Arrays, um Feiertage und spezielle Termine effizient zu verwalten, anstatt für jeden Tag eine separate Abfrage zu machen.
  • Dynamische Anpassungen:

    • Implementiere dynamische Anpassungen, sodass der Kalender automatisch für jedes Jahr angepasst wird, indem du das Jahr über eine Eingabeaufforderung abfragst.

FAQ: Häufige Fragen

1. Wie kann ich die Feiertage in meinen Excel-Kalender einfügen? Du kannst eine Feiertagsliste in einem separaten Blatt erstellen und dann mit SVERWEIS oder einer ähnlichen Funktion auf diese Liste zugreifen.

2. Was muss ich tun, um einen Excel-Jahreskalender zu erstellen? Nutze eine ähnliche Struktur wie im Monatskalender, aber füge zusätzliche Spalten für jeden Monat hinzu und verwende eine Schleife, um die Daten für das gesamte Jahr zu generieren.

3. Ist es möglich, einen Excel-Urlaubskalender zu erstellen? Ja, du kannst einen speziellen Tab für Urlaubstage erstellen und diese in den Hauptkalender integrieren, indem du sie entsprechend formatierst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige