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

Forumthread: Makro in Wenn-Funktion

Makro in Wenn-Funktion
04.04.2006 16:17:33
Jakob
Hallo,
Ich habe eine Datei mit 12 Tabellen (Jan. - Dez). In der Spalte A1:A31 stehen Datumsangaben (01.04.2006-31.04.2006). In den Zellen B1:B31 lasse über einen SVerweis Feiertage hinzufügen.
Jetzt möchte ich daß folgendes automatisch passiert:
Wenn in der Zelle B1:B31="Karfreitag" oder B1:B31="Ostermontag" steht, dann sollen die Zellen D1 und E1 verbunden werden und auf gelben Hintergrund und blaue Schrift Feiertag reingeschrieben werden.
Kann man so etwas realisieren und wenn ja wie?
Danke.
Gruß
J.Freitag
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro in Wenn-Funktion
04.04.2006 17:08:26
UweD
Hallo
so gehts. Die Zellen müssen aber vorher schon verbunden sein.
 
 ABCDE
101.04.2006  Feiertag
202.04.2006    
303.04.2006    
404.04.2006    
505.04.2006    
606.04.2006    
707.04.2006    
808.04.2006    
909.04.2006    
1010.04.2006    
1111.04.2006    
1212.04.2006    
1313.04.2006    
1414.04.2006Karfreitag   
1515.04.2006    
1616.04.2006Ostersonntag   
1717.04.2006Ostermontag   
1818.04.2006    
1919.04.2006    
2020.04.2006    
2121.04.2006    
2222.04.2006    
2323.04.2006    
2424.04.2006    
2525.04.2006    
2626.04.2006    
2727.04.2006    
2828.04.2006    
2929.04.2006    
3030.04.2006    
Formeln der Tabelle
B1 : =FeierTag(A1;0)
D1 : =WENN(ZÄHLENWENN(B:B;">""")>1;"Feiertag";"")
Bedingte Formatierungen der Tabelle
ZelleNr.: / BedingungFormat
D11. / Formel ist =ZÄHLENWENN(B:B;">""")>1Abc
 

Wie du siehst, ermittel ich die Feiertage per Formel (geht aber auch so wie du es machst)
Wenn es dich interessiert, hier die benutzerdefinierte Funktion.
Public Function FeierTag(Datum As Date, N As Boolean) As String
Dim Jahr As Integer
Jahr = Year(Datum)
If (Jahr > 1904) And (Jahr < 2100) Then
Select Case Format$(Datum, "dd.mm")
' Gesetzliche Feiertage
Case "01.01": FeierTag = "Neujahr"
Case "06.01": FeierTag = "Heilige Drei Könige"
Case "01.05": FeierTag = "Tag der Arbeit"
Case "15.08": FeierTag = "Mariä Himmelfahrt"
Case "03.10": FeierTag = "Tag der Deutschen Einheit"
Case "31.10": FeierTag = "Reformationstag"
Case "01.11": FeierTag = "Allerheiligen"
Case "24.12": FeierTag = "Heiligabend"
Case "25.12": FeierTag = "1. Weihnachtsfeiertag"
Case "26.12": FeierTag = "2. Weihnachtsfeiertag"
Case "31.12": FeierTag = "Sylvester"
Case Else
' Bewegliche Feste:
Select Case Datum - OsterSonntag(Datum)
Case -52: FeierTag = "Weiberfastnacht"
Case -48: FeierTag = "Rosenmontag"
Case -2:  FeierTag = "Karfreitag"
Case 0:   FeierTag = "Ostersonntag"
Case 1:   FeierTag = "Ostermontag"
Case 39:  FeierTag = "Christi Himmelfahrt"
Case 49:  FeierTag = "Pfingstsonntag"
Case 50:  FeierTag = "Pfingstmontag"
Case 60:  FeierTag = "Fronleichnam"
Case Else
If Datum = CDate("25.12." & Jahr) - Weekday("25.12." & Jahr, _
vbMonday) - 32 Then
FeierTag = "Buß- und Bettag"
Else
If N = True Then
FeierTag = "gewöhnlicher " & Format$(Datum, "DDDD") ' Kein Feiertag
ElseIf N = False Then
FeierTag = vbNullString ' Kein Feiertag
End If
End If
End Select
End Select
Else: FeierTag = vbNullString
End If
End Function
Public Function OsterSonntag(Datum As Date) As Date
Dim A As Integer, D As Integer, E As Integer, Jahr As Integer
Jahr = Year(Datum)
If (1904 < Jahr) And (Jahr < 2100) Then  ' Datum zulässig ?
A = Jahr Mod 19
D = (19 * A + 24) Mod 30
E = (2 * (Jahr Mod 4) + 4 * (Jahr Mod 7) + 6 * D + 5) Mod 7
OsterSonntag = CDate(DateSerial(Jahr, 3, 22 + D + E))
If Month(OsterSonntag) = 4 Then
If Day(OsterSonntag) = 26 Or (Day(OsterSonntag) = 25 And E = 6 And A > 10) Then
OsterSonntag = OsterSonntag - 7
End If
End If
End If
End Function

wird in ein Modul geschrieben und so wie oben beschrieben benutzt
Gruß UweD
(Rückmeldung wäre schön)
Anzeige
AW: Makro in Wenn-Funktion
04.04.2006 17:11:52
Philipp
Hallo Jakob,
probier mal Folgendes:
Dim Zeile as Integer
For Zeile = 1 to 31
if cells(Zeile,2).value = "Karfreitag" or cells(Zeile,2).value = "Ostermontag" then
Range("D1:E1").Select
With Selection
.MergeCells = True '--- Zellen verbinden
.Font.ColorIndex = 5 '--- blaue Schrift
.Interior.ColorIndex = 6 '--- gelber Hintergrund
.Interior.Pattern = xlSolid
End With
ActiveCell.FormulaR1C1 = "Feiertag"
end if
next Zeile
Gruß,
Philipp
p.s. Sieht hier im Thread etwas unschön aus, sollte aber klappen
Anzeige
AW: Makro in Wenn-Funktion
05.04.2006 15:19:48
Jakob
Hallo Philipp,
bei mir klappt es nur zum Teil, d.h. er verbindet nur die Zellen D1:E1 und schreibt dort Feiertag rein. Aber leider nicht in der entsprechende Zeile.
Weiß Du woran das liegen kann?
Ich kann keine Dateien hochladen sonst würde ich Dir meine Beispieldatei hochladen.
Danke und Gruß
J.Freitag
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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