Microsoft Excel

Herbers Excel/VBA-Archiv

Abfrage Grösser Kleiner per Makro | Herbers Excel-Forum


Betrifft: Abfrage Grösser Kleiner per Makro von: Joachim
Geschrieben am: 19.11.2009 16:24:56

Hi,

ich habe in der Zelle W1 das heutige Datum drin und frage per Makro ab , in welcher Zeile Cells(i, 20) kleiner ist als W1, wenn das zutrifft, soll die Zelle rot gefärbt werden. Das geht soweit:

If ActiveSheet.Cells(i, 20).Value <> "" And <b>ActiveSheet.Cells(i, 20).Value < Range("W1") </b>Then
Cells(i, 20).Select
Selection.Font.ColorIndex = 6
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
End If

Ich würde nun den Code dahin erweitern, das abgefragt wird:
Wenn Cells(i, 20) mehr als eine Woche vor W1 ist, dann so lassen (weis lassen)
Wenn Cells(i, 20) zwischen 1 und 7 Tage vor W1 ist, dann gelber hintergrund und rote Schrift.
Wenn Cells(i, 20) kleiner W1 dann Roter Hintergrung und gelbe Schrift (wie seither)

Wie mache ich das ?

Seither frage ich nur ab, ob kleiner W1, dann färben
Den Zeitraum 1. Woche vor Ablauf (gelber Hintergrund) hätte ich aber gerne definiert.

Danke für Eure Hilfe
Joachim

  

Betrifft: Zellen gemäß Datum färben - Widerspruch... von: NoNet
Geschrieben am: 19.11.2009 17:12:34

Hallo Joachim,

definiere bitte die Zeiträume genauer, denn da findet sich ein Widerspruch in Deinen Angaben :
Hier meine Interpretation Deiner Angaben :

Sub DatumsZellenFaerben()
    Dim i
    For i = 1 To 10
        With ActiveSheet.Cells(i, 20)
            If .Value <> "" And Range("W1") - .Value > 0 Then
                .Interior.Pattern = xlSolid
                
                Select Case Range("W1") - .Value
                Case 1
                    .Font.Color = xlNone
                    .Interior.Color = xlNone
                Case 2 To 7
                    .Font.ColorIndex = 3
                    .Interior.ColorIndex = 6
                Case Is > 7
                    .Font.ColorIndex = 6
                    .Interior.ColorIndex = 3
                End Select
            End If
        End With
    Next
End Sub
Übrigens benötigt man dazu kein VBA, das könnte man auch per "Bedingte Formatierung" lösen !

Gruß, NoNet


  

Betrifft: AW: Zellen gemäß Datum färben - Widerspruch... von: Joachim
Geschrieben am: 19.11.2009 20:52:57

Hi,
Du hast recht, irgend was stimmt da nicht. Also noch mal zur Deffinition:

Also in W1 steht das aktuelle Datum drin (=heute)

mit der Schleife frage ich nun Cells(i, 20) ab.

Wenn W1 < Cells(i, 20), dann Hintergrund ROT, Schrift GELB
Wenn W1 = Cells(i, 20) oder max.7 Tage kleiner, dann Hintergrund GELB, Schrift ROT
Wenn W1 ab dem 8 Tag (kleiner) denn Hintergrund WEIS.

Also anders gesagt:
die Zellen sind im Prinzip immer weis,
1 Woche, bevor W1 erreicht ist (bis einschliesslich W1, also Datem gleich) wird der Hintergrund Gelb
Sobald Wi überschritten ist, also das Datum in den Zellen grösser als W1 ist, also das Datum angelaufen ist, dan Hintergrunf Rot.

Wie muss ich demnach Dein Code ändern ?

Gruss
Joachim


  

Betrifft: Immer noch ein Widerspruch... von: NoNet
Geschrieben am: 19.11.2009 23:06:33

Hallo Joachim,

der Widerspruch ist immer noch enthalten - Du formulierst 3 mal "Wenn W1" :

Wenn W1 < Cells(i, 20) per VBA formuliert : If Cells(i,20)-[W1]>0 then
Wenn W1 = Cells(i, 20) oder max.7 Tage kleiner per VBA formuliert : If Cells(i,20)-[W1]<=7 and Cells(i,20)-[W1]>=0 then
Wenn W1 ab dem 8 Tag (kleiner) per VBA formuliert : If Cells(i,20)-[W1]>=8 then

Der erste Fall tritt auch dann ein,wenn die beiden letzten Fälle eintreten, also wenn z.B. [W1] um 6 Tage kleiner ist als Cells(i,20), dann sind die beiden ersten Aussagen korrekt ! - Welche Farbe soll denn dann gewählt werden ?

Gib doch einfach mal ein Beispiel, wenn in W1 z.B. "20.11.2009" steht...

Gruß, NoNet


  

Betrifft: AW: Immer noch ein Widerspruch... von: Joachim
Geschrieben am: 20.11.2009 09:57:32

Hi,



also mal anders formuliert:



in W1 steht immer das heutige Datum drin (= 20.11.2009)

in den verschiedenen Zellen ( Cells(i, 20) ) stehen Termine drin.



Wenn die Termine in den Zellen schon abgelaufen (alles kleiner 20.11.) sind, dann Hintergrund Rot, Schrift gelb.



Wenn die Termine in den Zellenin in max. 7 Tage auslaufen, (20.11 - 27.11) dann Hintergrund gelb, Schrift rot.



Wenn die Termine in den Zellen noch über eine Wochen von Heute (alles Grösser 27.11) entfernt sind, dann alles so lassen.



Passte es nun, komme auch langsam ins straucheln, oder findest Du noch ein Wiederspruch ?



Gruss

Joachim



Gruss Joachim


  

Betrifft: Kein Widerspruch mehr :-) von: NoNet
Geschrieben am: 20.11.2009 12:45:43

Hallo Joachim,

"That's it !" - Jetzt habe ich es kapiert : Ich ging bisher immer davon aus, dass es sich nur um bereits vergangene Daten (Datumsangaben) handelt - aber jetzt schreibst Du auch von zukünftigen Daten - genau DAS macht den Unterschied aus ;-). Hier das passende Makro :

Sub DatumsZellenFaerben()
    Dim i
    For i = 1 To 20
        With ActiveSheet.Cells(i, 20)
            .Select
            If .Value <> "" And Range("W1") > .Value Then
                .Interior.Pattern = xlSolid
                .Font.ColorIndex = 6
                .Interior.ColorIndex = 3
            ElseIf .Value - Range("W1") > 7 Then
                .Font.ColorIndex = 0
                .Interior.ColorIndex = xlNone
            ElseIf .Value - Range("W1").Value >= 0 And _
                    .Value - Range("W1").Value <= 7 Then
                .Font.ColorIndex = 3
                .Interior.ColorIndex = 6
            ElseIf .Value = "" Then
                .Font.ColorIndex = 0
                .Interior.ColorIndex = xlNone
            End If
        End With
    Next
End Sub
Gruß, NoNet


  

Betrifft: Danke, jetzt passt es :-) von: Joachim
Geschrieben am: 20.11.2009 17:28:02

Haben wir es doch noch geschaft :-))

Gruss
Joachim


Beiträge aus den Excel-Beispielen zum Thema "Abfrage Grösser Kleiner per Makro"