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

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
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

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige