Clever-Excel-Forum

Normale Version: VBA - Zellen nach Datum von/bis Färben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Liebe Excel-Freunde,

ich benötige mal wieder eure Hilfe mit VBA in Excel.

Dort habe ich einen Kalender erstellt. Das Formular, das man sich über den Button aufrufen kann erscheint später automatisch beim öffnen der Datei.

Jetzt kann der User das Formular ausfüllen und die Daten werden in die Excelliste übertragen.

Per VBA möchte ich nun erreichen, dass das Datum Von/bis jeweils in dem Kalender darüber grün eingefärbt wird.
Eine Lösung über eine Bedingte Formatierung bringt mir leider nichts, da die Farbe überschreibbar sein muss.

Hier ein Beispiel, wie das am Ende aussehen soll:
[attachment=25591]

Anbei noch die Beispieldatei, damit Ihr testen könnt:
[attachment=25593]

Schön wäre es ebenfalls, wenn alle Von/Bis Felder das Datumsformat TT.MM.JJJJ erhalten. Bei Access kann ich das in den Einstellungen einfach regeln (da braucht man nichtmal die Punkte zwischen den Zahlen eingebn),
bei Excel gibt es die Funktion ja leider nicht.

Vielen Dank für eure Hilfe.
Hola,

Eine Lösung über eine Bedingte Formatierung bringt mir leider nichts, da die Farbe überschreibbar sein muss.

was dürfen wir uns denn unter einer "überschreibbaren Farbe" vorstellen?

Gruß,
steve1da
Wenn ich eine Bedingte Formatierung anwende und sage das Ergebnis soll "Grün" sein, kann ich diese Farbe nicht durch eine andere Farbe (z.B. Rot)
manuell ersetzen, da die Bedingte Formatierung in Excel ja immer Vorrang hat.
Moin,

habe mir Deine Liste angeschaut. Finde nicht einmal Gehversuche die annähernd in die Richtung Deines Problems gehen. :)

Hast Du folgendes schon versucht:
a) Makrorekorder
b) Onlinehilfe
c) Suchfunktion des Forums


Hinweis:
Range
-Interior
--Color
---RGB

Beispiel:
Code:
Range("A1").Interior.Color = RGB (0,153,0)
Hallo Marco,

du findest noch keine "Gehversuche" in der Datei, weil ich mich erst seit kurzer Zeit mit VBA beschäftige und von daher
noch nicht weis, wie ich Anfangen soll. Und dem Makrorekorder kann ich nicht vermitteln, dass er das Datum, dass bei
Von/Bis steht in der Range B7:AF42 suchen soll und dann durchgehend markiert wird.

Habe Google schon seit Tagen auf den Kopf gestellt, um eine Lösung für das Problem zu finden, aber nichts passendes
gefunden. Deshalb wende ich mich an das Forum, denn mir konnte bisher immer sehr gut geholfen werden und ich
habe aus den erhaltenden Codes schon einiges gelernt.

Ich probiere gern mit deinem Codeschnipsel etwas rum und schaue, ob ich zu einem Ergebnis komme :28:
Zitat:Und dem Makrorekorder kann ich nicht vermitteln, dass er das Datum, dass bei

Von/Bis steht in der Range B7:AF42 suchen soll und dann durchgehend markiert wird.

Wird auch nicht funktionieren, da Du keine 365/366 Daten (also 01.01.2019, 02.01.2019 usw),
sondern x-Achse mit 1 -31 und y-achse mit Monatsnamen, hinterlegt hast.
Somit kannst gemäß Deinem Input von der UserForm weder nach Bereichen noch exakten Treffern suchen.

Du könntest Deinen (ohnehin) String aber zerlegen und dann die Achsen nach Treffern durchsuchen.
Da Ich Dich vorerst nicht von Deiner Logik abbringen möchte, empfehle Ich Dir folgende Vorgehensweise.

Getreu dem Motto: "Viele Wege führen nach Rom - aber langsam fahren, sonst verpasst Du die schöne Landschaft" ;)

Beispiel:
Code:
Dim sVonDatum as String
Dim sVonTag as String
Dim sVonMonat as String
Dim sVonJahr as string

sVonDatum = "01.01.2020"


sVonTag = Extrahiere den Tag mit der Funktion Mid() -> Onlinehilfe verwenden
sVonMonat = Extrahiere den Monat mit der Funktion Mid()
sVonJahr = Extrahiere das Jahr mit der Funktion Mid()

Verwende die Methode .Find() um an Informationen wie Row/Column zu kommen.
Sobald der Bereich identifiziert, weiter mit .Interior.Color.

by the way:
Im Falle der Korrektur, setzt dir folgendes Beispiel die Farbe wieder zurück:

Code:
Range("A1").Interior.Color = xlNone
'wobei Range auch eine Bereichsangabe wie bspw. Range("A1:A10") erlaubt

Viel Erfolg!
Super, habe es hinbekommen :05: 

Ich habe mir noch eine kleine Hilfstabelle unter den Kalender gebaut, die die Range für mich ermittelt
und VBA braucht dann nur noch die Range auslesen und einfärben.

Hier nochmal meine fertige Datei:
[attachment=25599]

Danke für die Denkanstöße :70:
sehr gern.