Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
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
Inhaltsverzeichnis

Kalender VBA

Kalender VBA
18.12.2022 13:55:27
Candy
Hallo Freunde,
Ich komm bei meinem Kalender nicht weiter...
also folgendes Problem.
Ich möchte gerne dass die Zahl 0,72 in jedes Feld außer am Wochenende geschrieben wird die sollen leer bleiben. (im idealfall ist die zahl sogar an den Tagen MO-FR unsichtbar kann aber trotzdem berechnet werden.)
ich hab versucht die Wochenenden durch die unten stehenden Code zu Ignorieren nur leider hab ich dann auch keine Feiertage im Kalender mehr drinnen stehen...
Ziel des ganzen ist:
- Feiertage soll an allen Tagen eintragen werden wo ein Feiertag stattfindet Auch am Wochenende. am besten in der Farbe "Rot"
- an allen anderen Wochentagen außer Sa-So soll die Zahl 0,72 stehen am besten unsichtbar für die Übersichtlichkeit und für Weiterberechnungen verwendbar - kein String.
hab schon einiges versucht und gegoogelt aber kein Ergebnis gefunden...
Hier mein Code:

Function Feiertag(Datum As Date) As Variant
Dim J%, D%
Dim O As Date
Dim Zahl As Variant
J = Year(Datum)
'Osterberechnung
D = (((255 - 11 * (J Mod 19)) - 21) Mod 30) + 21
O = DateSerial(J, 3, 1) + D + (D > 48) + 6 - _
((J + J \ 4 + D + (D > 48) + 1) Mod 7)
'--------------------------------------------------------------------------------------------------------------
'Feiertage berechnen
Select Case Datum
Case DateSerial(J, 1, 1)
Feiertag = "Neujahr"
Case DateSerial(J, 1, 6)
Feiertag = "Dreikönig*"
Case DateAdd("D", -2, O)
Feiertag = "Karfreitag"
Case O
Feiertag = "Ostersonntag"
Case DateAdd("D", 1, O)
Feiertag = "Ostermontag"
Case DateSerial(J, 5, 1)
Feiertag = "Erster Mai"
Case DateAdd("D", 39, O)
Feiertag = "Christi Himmelfahrt"
Case DateAdd("D", 49, O)
Feiertag = "Pfingstsonntag"
Case DateAdd("D", 50, O)
Feiertag = "Pfingstmontag"
Case DateAdd("D", 60, O)
Feiertag = "Fronleichnam*"
Case DateSerial(J, 8, 15)
Feiertag = "Maria Himmelfahrt*"
Case DateSerial(J, 10, 3)
Feiertag = "Deutsche Einheit"
Case DateSerial(J, 11, 22) - (DateSerial(J, 11, 18) Mod 7)
Feiertag = "Buß- und Bettag*"
Case DateSerial(J, 10, 31)
Feiertag = "Reformationstag*"
Case DateSerial(J, 11, 1)
Feiertag = "Allerheiligen*"
Case DateSerial(J, 12, 24)
Feiertag = "Heilig Abend*"
Case DateSerial(J, 12, 25)
Feiertag = "EWeihnacht"
Case DateSerial(J, 12, 26)
Feiertag = "ZWeihnacht"
Case DateSerial(J, 12, 31)
Feiertag = "Silvester*"
Case Else
Feiertag = 0.72
End Select
'------------------------------------------------------------------------------------------------------------
'Wochenende ignorieren
'If Weekday(Datum, 2) > 5 Then
' Feiertag = ""
'Else
' Feiertag = 0.72
'End If
'------------------------------------------------------------------------------------------------------------
'_______________________________________________________________________________________________________________
End Function
'Falls Fehler dann Fehlermeldung ersetzen durch:
Sub Fehlerbereinigung_1()
Dim c As Range
For Each c In ActiveSheet.UsedRange
If IsError(c) Then c = ""
Next c
End Sub
Userbild

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kalender VBA
18.12.2022 14:00:06
Candy

Function Feiertag(Datum As Date) As Variant
Dim J%, D%
Dim O As Date
Dim Zahl As Variant
J = Year(Datum)
'Osterberechnung
D = (((255 - 11 * (J Mod 19)) - 21) Mod 30) + 21
O = DateSerial(J, 3, 1) + D + (D > 48) + 6 - _
((J + J \ 4 + D + (D > 48) + 1) Mod 7)
'Feiertage berechnen
Select Case Datum
Case DateSerial(J, 1, 1)
Feiertag = "Neujahr"
Case DateSerial(J, 1, 6)
Feiertag = "Dreikönig*"
Case DateAdd("D", -2, O)
Feiertag = "Karfreitag"
Case O
Feiertag = "Ostersonntag"
Case DateAdd("D", 1, O)
Feiertag = "Ostermontag"
Case DateSerial(J, 5, 1)
Feiertag = "Erster Mai"
Case DateAdd("D", 39, O)
Feiertag = "Christi Himmelfahrt"
Case DateAdd("D", 49, O)
Feiertag = "Pfingstsonntag"
Case DateAdd("D", 50, O)
Feiertag = "Pfingstmontag"
Case DateAdd("D", 60, O)
Feiertag = "Fronleichnam*"
Case DateSerial(J, 8, 15)
Feiertag = "Maria Himmelfahrt*"
Case DateSerial(J, 10, 3)
Feiertag = "Deutsche Einheit"
Case DateSerial(J, 11, 22) - (DateSerial(J, 11, 18) Mod 7)
Feiertag = "Buß- und Bettag*"
Case DateSerial(J, 10, 31)
Feiertag = "Reformationstag*"
Case DateSerial(J, 11, 1)
Feiertag = "Allerheiligen*"
Case DateSerial(J, 12, 24)
Feiertag = "Heilig Abend*"
Case DateSerial(J, 12, 25)
Feiertag = "EWeihnacht"
Case DateSerial(J, 12, 26)
Feiertag = "ZWeihnacht"
Case DateSerial(J, 12, 31)
Feiertag = "Silvester*"
Case Else
Feiertag = 0.72
End Select
'Wochenende ignorieren
'If Weekday(Datum, 2) > 5 Then
'   Feiertag = ""
'Else
'    Feiertag = 0.72
'End If
'_______________________________________________________________________________________________________________
End Function
'Falls Fehler dann Fehlermeldung ersetzen durch:
Sub Fehlerbereinigung_1()
Dim c As Range
For Each c In ActiveSheet.UsedRange
If IsError(c) Then c = ""
Next c
End Sub

Anzeige
AW: Bildbearbeitung geht hier nicht !! :-)
18.12.2022 14:01:11
Jowe
Helfer bitte nicht verar...
18.12.2022 14:40:54
Daniel
"hab schon einiges versucht und gegoogelt aber kein Ergebnis gefunden...
Hier mein Code:"
Das stimmt so nicht ganz.
Du hast am Donnerstag diese Frage hier im Forum gestellt und diese Lösung von zwei freundlichen Helfern bekommen. Leider fehlt dort die Rückmeldung und ein Dankeschön von dir.
https://www.herber.de/forum/archiv/1908to1912/1911613_Feiertag_Zahl_wird_nicht_berechnet.html
Und jetzt das hier zu behaupten ohne Hinweis darauf, wo du die Lösung tatsächlich her hast, ist schon frech. Ich hoffe, du hast "Kinderstube" genug um zu erkennen, warum dein Verhalten hier nicht OK ist.
Gruß Daniel
Anzeige
AW: Helfer bitte nicht verar...
18.12.2022 14:59:47
Candy
Hallo Daniel
du hast recht ich hab eine ähnliche Frage schon mal in den letzten Tagen gestellt.
ich bin neu hier im Forum und wollte niemanden verärgern.
ich werde mich darum bemühen in Zukunft ein besseres Verhalten an den Tag zu legen.
Außerdem habe ich mich bedankt... -.-
Die Funktion hat geholfen hier nochmal ein Dankeschön von mir.
Nur hat sich damit auch ein neues Problem eröffnet, den ich hier versuche entgegenzuwirken.
Ich entschuldige mich hiermit falls ich einen netten Helfer verärgert habe.
hoffe auf eine zukünftig gute und nette Zusammenarbeit in diesem Forum.
ich werde sicherlich noch öfter nach Hilfe suchen deshalb war nicht böse gemeint
Anzeige
AW: Helfer bitte nicht verar...
18.12.2022 15:34:36
Daniel
"Außerdem habe ich mich bedankt... -.-"
Dann zeige mir bitte wo.
Ich bin einer der beiden Helfer und dieses Dankeschön ist bei mir noch nicht angekommen.
Es mag natürlich sein, dass ich es übersehen habe, aber mit einem Link auf den entsprechenden Beitrag von dir lässt sich dieses Midsverständniss sicher klären.
Gruß Daniel
AW: Helfer bitte nicht verar...
18.12.2022 18:01:42
Jowe
Candy,
der letzte Teil Deiner Funktion 'Feiertag' sollte so ausschauen:

        ' .......
Case DateSerial(J, 12, 31)
Feiertag = "Silvester*"
Case Else
If Weekday(Datum, 2) > 5 Then
Feiertag = ""
Else
Feiertag = 0.72
End If
End Select
End Function

Antworten wiederholen
18.12.2022 18:11:14
Daniel
Hi Jowe
Und was genau unterscheidet jetzt deine Antwort von Gerda Antwort im Thread vom 15?
Ist das gleiche in der gleichen Form in der gleichen Ausführlichkeit.
Warum sollte dann der Hinweis "bitte einfach nochmal lesen" nicht ausreichen?
Das ist doch der Vorteil von geschrieben, dass das geht.
Gruß Daniel
Anzeige
AW: Antworten wiederholen
18.12.2022 18:29:05
JoWE
Danke für Deine Belehrung,
Ich nehme das hin, sei mir bitte nicht gram.
Gruß
Jochen
AW: Kalender VBA
18.12.2022 16:32:36
Daniel
Lies dir nochmal genau durch, was man dir im alten Thread geraten hat.
Du hast noch nicht richtig umgesetzt, was da geschrieben wurde.
Mit etwas nachdenken sollte man auch selber dahinter kommen, wo du dir Abfrage mit dem Wochenende hintun musst, damit ein Feiertag auch am Wochenende angezeigt wird.
Die Färbung machst du besser nicht im Makro, sondern mit der Bedingten Formatierung (bspw mit der Abfrage IstText.
Einem Excelprofi sollte die Bedingte Formatierung bekannt sein.
Gruß Daniel
Anzeige
AW: Kalender VBA
18.12.2022 16:49:52
JoWE
Hallo ihr Zwei,
-Candy, ich finde Deinen "Fehler" nicht wirklich schlimm
-Daniel, ich finde Deinen Kommunikationsstil schlimm
Statt diese Diskussion zu führen solltest Du besser Candy eine Lösung anbieten
mit der Sie ihr Problem lösen kann.
Das 'Oberlehrerhafte' kommt nicht wirklich gut. Sorry.
Gruß
Jochen
AW: Kalender VBA
18.12.2022 16:59:06
Oberschlumpf
Hi Jochen,
a) ich kann deine Kritik, bzgl "Oberlehrer", - ein bisschen! - verstehen
b) ich kann aber - in diesem Fall - auch genau so gut Daniel verstehen, denn...
c) ...ist Candy ihm noch immer im anderen Beitrag eine Antwort schuldig!
Auch ich gehöre, wie vlt Daniel, mittlerweile zu den Helfern, die immer mehr ganz ganz bisschen Motivation verlieren, da es immer wieder vorkommt, dass Fragende nicht auf jede Hilfestellung antworten.
Also Candy - lies dir im anderen Beitrage - JEDE! - Hilfestellung noch mal durch...und antworte dann natürlich auch an passender Stelle.
Ciao
Thorsten
Anzeige
AW: Kalender VBA
18.12.2022 17:14:24
JoWE
Hi Thorsten,
stimme Dir zu. Einen schönen,
friedlichen vierten Advent für uns alle.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige