Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
784to788
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
784to788
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Excelberechnung in VBA

Excelberechnung in VBA
31.07.2006 19:49:59
Peter
Hallo VBA-Profis.
Folgendes Problem.
Ich möchte die Feiertage eines Jahres berechnen. Für Excel habe ich das gelöst.
Nun möchte ich das ganze von einem Tabellenblatt unabhängig in VBA durchführen.
Ich habe mit einem Makrorekorder die Formeln aufgezeichnet. Allerdings soll das ganze nicht statisch für ein Jahr funktionieren sondern zum Beispiel nach Eingabe des Jahres über eine Userform für jedes Jahr. Dazu müssen die Excel-Formeln im VBA aber Variable verstehen. Und dies kriege ich nicht hin.
Ich hoffe ich habe mich nicht zu umständlich ausgedrückt.
Ich hänge eine Datei mit den Excelformeln und der Übertragung der Formeln in VBA an.
https://www.herber.de/bbs/user/35476.xls
Vielleicht kann mir jemand helfen.
Danke schan mal
Peter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excelberechnung in VBA
31.07.2006 21:05:58
Josef
Hallo Peter!
Mal abgesehen davon, daß in deinen Berechnungen ein Fehler versteckt ist, würde ich das in VBA, vom späteren Einsatz abhängig, zB. so lösen.
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

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 test()
Dim dummy As Variant

dummy = Feiertage(2006)

Range("A1:B" & UBound(dummy, 1) + 1) = dummy
End Sub


Gruß Sepp

Anzeige
AW: Excelberechnung in VBA
31.07.2006 21:29:09
Peter
Hallo Sepp.
Das funktioniert wunderbar. Jetzt müsste es nur noch möglich sein das gewünschte Jahr zu übergeben.
Die späteren Anwendungen sollen verschiedene sein. Zum einen eine reine Auflistung wie sie jetzt schon funktioniert. Unter anderem sollen die Ergebnisse aber auch für die Formatierung eines Kalenders dienen.
Bis hierher schon mal vielen Dank
gruß
Peter
AW: Excelberechnung in VBA
31.07.2006 21:38:21
Josef
Hallo Peter!
Hier noch was zum Probieren und Nachschauen. (VBA-Passwort = "x")
https://www.herber.de/bbs/user/35481.xls
Gruß Sepp
Anzeige
AW: Excelberechnung in VBA
31.07.2006 22:24:52
Peter
Wunderbar Sepp.
Da steckt schon einiges drin was ich verwenden kann.
Jetzt muss ich nur noch versuchen das alles zu verstehen und an anderer Stelle für meine Zwecke anzuwenden.
Vielen Dank noch mal.
Peter
AW: Excelberechnung in VBA
31.07.2006 21:19:32
Dörte
hallo peter,
endlich kann ich auch mal mit ner antwort glänzen und nicht immer nur fragen stellen.
ich habe mich vor einiger zeit mit dem thema feiertage beschäftigt und dieses makro dazu gefunden

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

dieses makro bezieht sich auf ostersonntag, der seit jahrhunderten nach dem mondkalender berechnet wird.die restlichen beweglichen feiertage beziehen sich auf ostersonntag.pfingstmontag ist so und so viele tage nach ostermontag ect.
ich hänge die passende datei mal mit an, vielleicht ist dir so ja schon geholfen.
https://www.herber.de/bbs/user/35480.xls
gruß dörte
Anzeige
AW: Excelberechnung in VBA
31.07.2006 22:22:05
Peter
Hallo Dörte.
Danke für deine Antwort. Sepp hat dieses Mkro in seiner Antwort auch genannt.
Wenn zwei diese Antwort liefern um so besser.
Gruß
Peter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige