Discussion:
Formatierung mit VBA
(zu alt für eine Antwort)
Mike Berger
2009-07-04 14:54:57 UTC
Permalink
Hallo zusammen,

ich habe im Bereich E16:AI16 jeweils das Datum stehen.

Nun möchte ich in den Bereichen E17:AI22 und E24:AI30 den Hintergrund
der Zelle farbig machen, wenn der Wochentag in E16:AI16 jeweils nach der
Zellenspalte ein Samstag oder Sonntag ist.

Mein Code:
Dim Bereich As Range
Dim Zelle As Range

Set Bereich = Range("E17:AI22")
For Each Zelle In Bereich
if (???)
Zelle.Interior.ColorIndex = 5
Else
Zelle.Interior.ColorIndex = xlNone
End if
Next Zelle

Ich weiss jetzt leider nicht, wie ich in VBA die If Anweisung schreiben
muss: Schaue in die Zeile 16, nehme das Datum, wandele es um in
Wochentag und prüfe, ob es 1 oder 7 ist.

Danke Euch.

Mike
Claus Busch
2009-07-04 15:29:28 UTC
Permalink
Hallo Mike,
Post by Mike Berger
ich habe im Bereich E16:AI16 jeweils das Datum stehen.
Nun möchte ich in den Bereichen E17:AI22 und E24:AI30 den Hintergrund
der Zelle farbig machen, wenn der Wochentag in E16:AI16 jeweils nach der
Zellenspalte ein Samstag oder Sonntag ist.
probiers mal so:
Set Bereich = Range("E17:AI22, E24:AI30")
For Each Zelle In Bereich
If Weekday(Zelle, 2) > 5 Then
Zelle.Interior.ColorIndex = 5
End If
Next Zelle


Mit freundlichen Grüssen
Claus Busch
--
Win XP Prof SP2 / Vista Ultimate
Office 2003 SP2 / 2007 Ultimate
Mike Berger
2009-07-04 17:31:30 UTC
Permalink
Hallo Claus,

da habe ich jetzt einen Fehler "Typenunverträglichkeit" bekommen.

Habe nun folgendes im Code:

For Each Zelle In Bereich
ZellenAdresse = Split(Zelle.AddressLocal, "$")
Set ZellenSpalte = Range(ZellenAdresse(1) & "16")
If Weekday(ZellenSpalte, 2) > 5 Then
Zelle.Interior.ColorIndex = 5
Else
Zelle.Interior.ColorIndex = xlNone
End If
Next Zelle

Dies geht, ist zwar bestimmt nicht der einfachste Weg, aber so läuft es
ganz gut :-)

Danke Dir.

Mike
Post by Claus Busch
Hallo Mike,
Post by Mike Berger
ich habe im Bereich E16:AI16 jeweils das Datum stehen.
Nun möchte ich in den Bereichen E17:AI22 und E24:AI30 den Hintergrund
der Zelle farbig machen, wenn der Wochentag in E16:AI16 jeweils nach der
Zellenspalte ein Samstag oder Sonntag ist.
Set Bereich = Range("E17:AI22, E24:AI30")
For Each Zelle In Bereich
If Weekday(Zelle, 2) > 5 Then
Zelle.Interior.ColorIndex = 5
End If
Next Zelle
Mit freundlichen Grüssen
Claus Busch
Andreas Killer
2009-07-05 15:10:13 UTC
Permalink
Naja, das ist ein wenig grausam. ;-)) Es gibt da einen Trick mit dem
ist sowas ganz einfach.

Andreas.

Sub Test()
Dim Datum As Range, Farbe1 As Range, Farbe2 As Range
Dim X As Integer

'Bereiche definieren
Set Datum = Range("E16:AI16")
Set Farbe1 = Range("E17:AI22")
Set Farbe2 = Range("E24:AI30")

'Komplett entfärben geht schneller
Farbe1.Interior.ColorIndex = xlNone
Farbe2.Interior.ColorIndex = xlNone

'Ein Range kann wie ein Array angesprochen werden,
'die Zählung beginnt hier immer bei 1!
For X = 1 To Datum.Columns.Count
If Weekday(Datum(X), vbMonday) > 5 Then
Farbe1.Columns(X).Interior.ColorIndex = 5
Farbe2.Columns(X).Interior.ColorIndex = 5
End If
Next
End Sub

Lesen Sie weiter auf narkive:
Loading...