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.

Feiertage per VBA
#1
Hallo zusammen,

bin schon wieder mal an meine Grenzen gestoßen Huh.

Ich habe folgendem Code um die Feiertage automatisch auszurechnen.

Code:
Option Explicit
Public Function Feiertage(intYear As Integer) As Variant
   Dim varDates(13, 1) As Variant
   Dim dEaster As Date
   dEaster = Easter(intYear)
  
   varDates(0, 0) = DateSerial(intYear, 1, 1)
   varDates(0, 1) = "Neujahr"
  
   varDates(1, 0) = DateSerial(intYear, 1, 6)
   varDates(1, 1) = "Dreikönig"
  
   varDates(2, 0) = dEaster - 3
   varDates(2, 1) = "Karfreitag"
  
   varDates(3, 0) = dEaster + 1
   varDates(3, 1) = "Ostermontag"
  
   varDates(4, 0) = DateSerial(intYear, 5, 1)
   varDates(4, 1) = "Tag der Arbeit"
  
   varDates(5, 0) = dEaster + 39
   varDates(5, 1) = "Christi Himmelfahrt"
  
   varDates(6, 0) = dEaster + 50
   varDates(6, 1) = "Pfingstmontag"
  
   varDates(7, 0) = dEaster + 60
   varDates(7, 1) = "Fronleichnam"
  
   varDates(8, 0) = DateSerial(intYear, 10, 3)
   varDates(8, 1) = "Tag der Einheit"
  
   varDates(9, 0) = DateSerial(intYear, 11, 1)
   varDates(9, 1) = "Allerheiligen"
  
   varDates(10, 0) = DateSerial(intYear, 12, 24)
   varDates(10, 1) = "Heiligabend"
  
   varDates(11, 0) = DateSerial(intYear, 12, 25)
   varDates(11, 1) = "1. Weihnachtstag"
  
   varDates(12, 0) = DateSerial(intYear, 12, 26)
   varDates(12, 1) = "2. Weihnachtstag"
  
   varDates(13, 0) = DateSerial(intYear, 12, 31)
   varDates(13, 1) = "Silvester"
  
   Feiertage = varDates
  
End Function

Private Function Easter(Year As Integer) As Date
   Dim D As Integer
   D = (((255 - 11 * (Year Mod 19)) - 21) Mod 30) + 21
   Easter = DateSerial(Year, 3, 1) + D + (D > 48) + 6 - _
       ((Year + Year \ 4 + D + (D > 48) + 1) Mod 7)
End Function

Sub dummy()
  
   Dim dummy As Variant
  
   dummy = Feiertage(2015)
  
   Range("A1:B" & UBound(dummy, 1) + 1) = dummy
End Sub

Die Jahreszahl muß hier leider immer im Code (dummy = Feiertage(2015)) geändert werden.

Ist es möglich, dass ich diese ändere indem ich auf dem Sheet Feiertage in der Spalte D2 das neue Jahr eintrage?

Wäre wie immer total dankbar für eure schnelle Hilfe.

VG Mario

Code strukturiert
[Bild: smilie.php?smile_ID=1810]
Antworten Top
#2
Hallo Mario,

natürlich. Feiertage(Sheets("Feiertage").Range("D2").Value) .Value kann man meist weglassen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Mario
Antworten Top
#3
Hallo André,

hat super funktioniert :28:.

Vilen Dank und noch einen schönen Sonntag.

VG Mario
Antworten Top


Gehe zu:


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