String und Farbe in Abhängigkeit vom Datum anpassen

26/01/2010 - 07:47 von Thomas Eisenmann | Report spam
Hallo alle miteinander,

Da ich in VBA nicht so geübt bin, wende ich mich mit meinem kleinem Problem
an euch. Ich brauche einen VBA Skript, welcher in Excel auf ein Button_Click
abgearbeitet werden soll:
[1] prüft, ob das Datum in Zelle A1 ein Freitag ist,
[2] Wenn ja, prüft, ob es der 1.Freitag im Monat ist,
[3] Wenn ja, schreibe „5“ in Zelle A2 und àndere die Hintergrundfarbe von
Zelle A2 Grün,
[4] Sollte das Datum der 2.Freitag im Monat sein, dann schreibe „6“ nach A2.
[4] Sollte das Datum der 3.Freitag im Monat sein, dann schreibe „7“ nach A2.
[4] Sollte das Datum der 4.Freitag im Monat sein, dann schreibe „8“ nach A2.
[4] Sollte das Datum der letzte Freitag im Monat sein, dann schreibe den
Monatsname nach A2.
[4] Sollte das Datum der letzte Freitag im Jahr sein, dann schreibe die
Jahreszahl nach A2.

Könnt Ihr mir helfen bei der Umsatzung? Danke im Voraus

Danke im Voraus
Grüße Thomas
 

Lesen sie die antworten

#1 Andreas Killer
26/01/2010 - 09:39 | Warnen spam
On 26 Jan., 07:47, Thomas Eisenmann
wrote:

Da ich in VBA nicht so geübt bin, wende ich mich mit meinem kleinem Problem
an euch. Ich brauche einen VBA Skript, welcher in Excel auf ein Button_Click
abgearbeitet werden soll:


Hmm, sieht etwas seltsam aus, ich mach das mal so das Du es etwas
universeller einsetzen kannst.

Z.B. kannst Du direkt in A2 die Formel =GetFriday(A1) schreiben, ohne
auf einen Button klicken zu müssen und die Farbe setzt Du mit der
bedingten Formatierung wenn Zelle nicht 0.

Andreas.

Sub Schaltflàche1_BeiKlick()
'Das wàre das "Button_Click"-Makro
Dim Result As Variant
Result = GetFriday(Range("A1"))
If Result <> 0 Then
Range("A2") = Result
Range("A2").Interior.ColorIndex = 10
Else
'Inhalt löschen
Range("A2").ClearContents
'normaler Hintergrund
Range("A2").Interior.ColorIndex = xlNone
End If
End Sub

Function GetFriday(Datum As Date) As Variant
Dim Tag As Integer

'Wenn es kein Freitag ist
GetFriday = 0

'[1] prüft, ob das Datum in Zelle A1 ein Freitag ist,
Tag = Weekday(Datum, vbUseSystemDayOfWeek)
If Tag = 5 Then
If Year(Datum + 7) <> Year(Datum) Then
'[4] Sollte das Datum der letzte Freitag im Jahr sein, _
dann schreibe die Jahreszahl nach A2.
GetFriday = Year(Datum)
ElseIf Month(Datum + 7) <> Month(Datum) Then
'[4] Sollte das Datum der letzte Freitag im Monat sein, _
dann schreibe den Monatsname nach A2.
GetFriday = Format(Datum, "MMMM")
ElseIf Day(Datum) < 8 Then
'[2] Wenn ja, prüft, ob es der 1.Freitag im Monat ist,
'[3] Wenn ja, schreibe „5“ in Zelle A2 und àndere die _
Hintergrundfarbe von Zelle A2 Grün,
GetFriday = 5
ElseIf Day(Datum) < 15 Then
'[4] Sollte das Datum der 2.Freitag im Monat sein, dann _
schreibe „6“ nach A2.
GetFriday = 6
ElseIf Day(Datum) < 22 Then
'[4] Sollte das Datum der 3.Freitag im Monat sein, dann _
schreibe „7“ nach A2.
GetFriday = 7
ElseIf Day(Datum) < 29 Then
'[4] Sollte das Datum der 4.Freitag im Monat sein, dann _
schreibe „8“ nach A2.
GetFriday = 8
End If
End If
End Function

Ähnliche fragen