Thema Datum  Von Nutzer Rating
Antwort
26.06.2008 12:33:46 daniel
NotSolved
26.06.2008 13:52:22 daniel
NotSolved
Rot Aw:VBA Programm das Wochenende und Feiertage rausr
28.06.2008 11:26:59 Holger
NotSolved

Ansicht des Beitrags:
Von:
Holger
Datum:
28.06.2008 11:26:59
Views:
1374
Rating: Antwort:
  Ja
Thema:
Aw:VBA Programm das Wochenende und Feiertage rausr
Hallo Daniel,
vielleicht gibt es noch etwas einfacheres, aber das musst du selbst recherchieren.
Meine Hinweise:
Die Arbeitstage kannst du auch ohne VBA mit der Funktion Nettoarbeitstage (im VBA natürlich NetWorkDays. also:
a=Application.WorksheetFunction.NetWorkDays(Startdatum, Enddatum, Bereich für Feiertage).

Die Feiertage sind entweder an einem festen Datum oder hängen von Ostern oder dem Wochentag z.B. des Heiligen Abends ab. Die Feiertage musst du in die Zellen des Bereichs für Feiertage stellen (Cells(Zeile, Spalte)=CStr(berechnetes Datum des Feiertages)). Sei j eine Stringvariable mit der Jahreszahl zwischen 1901 und 2099. Ggf. musst du mehrere Jahre für die Feiertag berücksichtigen:

Feste Feiertage (regional verschieden):
Neujahr: Cdate(„01.01.“+j)
Hl. 3 Kö: Cdate(„06.01.“+j)
Maifeiertag: Cdate(„01.05.“+j)
Friedensfest: Cdate(„08.08.“+j)
Maria Himmelf.: Cdate(„15.08.“+j)
Tag dt. Einh.: Cdate(„03.10.“+j)
Reformationstag: Cdate(„31.10.“+j)
Allerheiligen: Cdate(„01.11.“+j)
Heiliger Abend: Cdate(„24.12.“+j)
1. Weihn: Cdate(„25.15.“+j)
2. Weihn.: Cdate(„26.12.“+j)
Silvester: Cdate(„31.12.“+j)

Bewegliche Feiertage:
Ostern berechnest du nach der Gauß-Formel. Hier ein älteres Programm aus meiner Anfängerzeit, das du sicherlich manipulieren musst:

Sub Osterberechnung()
j = Val(j)
m = 24: n = 5
a = j Mod 19: b = j Mod 4: c = j Mod 7
d = (19 * a + m) Mod 30
e = (2 * b + 4 * c + 6 * d + n) Mod 7
If d + e 10) Then o = DateSerial(j, 4, 18)
End If
End Sub

Die möglichen Feiertage, die nicht zwingend auf ein Wochenende fallen, sind dann
o - 48 = "Rosenmontag"
o - 47 = "Fastnacht "
o - 46 = "Aschermittwoch "
o - 2 = "Karfreitag "
o + 1 = "Ostermontag "
o + 39 = "Chr. Himmelfahrt "
o + 50 = "Pfingstmontag "
o + 60 = "Fronleichnam "

e = DateSerial(j, 12, 24): w1 = WeekDay(e): If w1 > 1 Then e = e - w1 + 1
e - 32 = "Buß- u. Bettag "

Viel Erfolg
Holger
daniel schrieb am 26.06.2008 12:33:46:

Hallo zusammen,

ich bin Praktikant und soll eine Soll / Ist Vergleich für 2007 machen.
Ich habe in Excel 2 Spalten, einmal mit den Soll Daten und einmal mit den Ist Daten. Nun soll ich als VBa newbie ein Programm erstellen das mir die Differenz der beiden Spalten errechnet und ausgibt und gleichzeitig aber die Wochenendtage und Feiertage nicht mitrechnet.
Ich bin sehr gerne bereit mich hier einzuarbeiten und will auch VBA erlernen d.h. ich erwarte kein vollständiges Programm aber ehrlich gesagt ich habe keine Ahnung wie und wo ich anfangen soll, hab auch noch n bischen zeitdruck :-(

wenn mir jemand n bischen auf die Sprünge helfen kann mit ein paar guten Tipps, wäre ich hierfür sehr dankbar aber bitte keine Buchtipps, habe schon VBA f+ür Dummies daheim...

lg
daniel

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
26.06.2008 12:33:46 daniel
NotSolved
26.06.2008 13:52:22 daniel
NotSolved
Rot Aw:VBA Programm das Wochenende und Feiertage rausr
28.06.2008 11:26:59 Holger
NotSolved