jumpstylerpaf
Goto Top

Wenn Zelle Inhalt,dann Zeile einfärben - VBA?!

Moin moin!
Bin seit gestern am Rumsuchen und Verzweifeln face-sad

Ich hab für die Firma in Excel (2007) ne Fahrzeugtabelle erstellt und nun dacht ich mir,der Übersicht halber wäre es besser,wenn abgemeldete Fahrzeuge automatisch eingefärbt werden.

Nun hab ich gestern schon wie ein Irrer gesucht,aber nur "Bedingte Formatierung" gefunden. Der Code war =$(Zelle)<>"" ...soweit ja eigtl richtig,nur färben sich dann die leeren Zellen ein und die mit Inhalt bleiben unverändert.
Welche Formaterung ist denn die Richtige? Soweit ich das richtig sehe,ist die bedingte Formatierung ja nur für einzelne Zellen bzw behandelt keine Zeilen in einem Zug. Laut Forumsbeiträgen ist nämlich "Regeln zum Hervorheben von Zellen" -> "Gleich" die richtige,nur dann bekomm ich eben o.g. Ergebnis.

Bin durch googeln dann auf dieses Thema gekommen. Nur besteht hier das Problem,dass ich die Zellen nicht einfärben ,sondern lediglich die Schrift in grau abwandeln will. (Man könnte den VBA Code bestimmt abändern,aber mit 4 Jahren Pause nach dem letzten VBA-Unterricht an der Realschule,ist das gar nicht mehr so einfach)
Im Grunde - sofern ich mich nicht irre - müsste das doch mit nem kurzen IF-Then-Else getan sein
so in etwa:

IF E3(Inhalt) Then
     Range("3:3").Font.ColorIndex = 8 (weiß grad nicht,was grau für nen Index hat)  
Else
     Range("3:3").Font.ColorIndex = 1  
End IF

Ich weiß jetzt nur eben nicht,ob Range("3:3") das ist,was ich bezwecken will und was der Befehl ist für "Wenn Zelle XX Inhalt hat".
Wenn die 2 stimmen,sollte es doch funktionieren oder?
Problem hierbei wäre halt,dass für jede Zeile den Code kopieren müsste,was aber nicht das Problem sein sollte (wenn jemand ne "Stapelmethode" kennt,nehm ich sie aber gerne an face-big-smile ) ,denn kopiert und abgeändert ist er gleich und allzuviele Fahrzeuge kommen ja in nem Betrieb nicht dazu...zumindestens nicht in kurzer Zeit ^^


so long
JumpstylerPAF

Content-ID: 112415

Url: https://administrator.de/contentid/112415

Ausgedruckt am: 16.11.2024 um 01:11 Uhr

Monschu
Monschu 26.03.2009 um 10:30:22 Uhr
Goto Top
nochmal zum verständnis was soll eingefärbt werden?
leere zellen oder zellen mit text (bestimmter oder jeder text)

mit bedingter formatierung kannst du auch mehrere zellen verbinden und mehrere auswahlkriterien einfügen.
ich würde z.b mit

zellwert - gleich/ungleich (je nachdem was du willst) - =" " oder/und ="" (oder eben der spezielle text)

arbeiten

hoffe das ich dich richtig verstanden habe und nicht falsch.
gruß
monschu
JumpstylerPAF
JumpstylerPAF 26.03.2009 um 11:03:41 Uhr
Goto Top
Kurz erklärt:
Wenn in E3 Inhalt (egal ob Datum oder nur ein Buchstabe),dann soll Zeile 3 eine graue Schrift bekommen.
Bei E4 eben dann Zeile 4 usw.

Hab überlegt,dass man in meinem "Codebeispiel" die 3en durch Platzhalter ersetzen könnte,falls es sowas in VBA gibt.
Dann bräuchte ich ja nur noch den korrekten Befehl für die Inhaltsprüfung und durch den Joker müsste Excel den Vorgang somit ja auf alle Zellen anwenden?!


Wenn ich Bedingte Formatierung - Gleich ="" mache,wendet er das ja nur auf leere Zellen an.
Monschu
Monschu 26.03.2009 um 11:07:13 Uhr
Goto Top
deshalb dann ungleich und am besten noch als zweites =" " fals mal ein leerzeichen getippt ist
Uffschnapper
Uffschnapper 26.03.2009 um 11:24:19 Uhr
Goto Top
Hallo,
mit der "Bedingte Formatierung" bist du meiner Meinung nach besser dran als mit VBA face-smile
Die Spalten, Zeilen oder Zellen makieren, "Bedingte Formatierung" aufrufen,
Zellwert ist auswählen --> gleich auswählen --> = "Zellen inhalt" einfügen
Den Button Format drücken Schriftfarbe oder Musterfarbe auswählen, fertig face-smile
bastla
bastla 26.03.2009 um 11:26:31 Uhr
Goto Top
... allerdings, wie schon angeführt, nicht "Zellwert ist", sondern "Formel ist":
=NICHT(ISTLEER($E3))
Grüße
bastla
JumpstylerPAF
JumpstylerPAF 26.03.2009 um 11:32:56 Uhr
Goto Top
Mal sehen ob ich das richtig kapiert hab:

Zellwert = $E$3=""
Zellwert = $E$3=" "
Zellwert <>$E$3 = "*"
Zellwert <>$E$3 = ""

Dann markiert er mir aber leere und "volle" Zellen immer noch separat.


IF Range("E*") = "" OR Range("E*") = " " Then  
     Range("*:*").Font.ColorIndex = 8  
Else
     Range("*:*").Font.ColorIndex = 1  
End IF

So hab ich sgerade ausprobiert,bekomm aber n Laufzeitfehler 1004. Höchstwahrscheinlich wiedr n Denkfehler von mir,aber weist die erste Zeile nicht an,dass Excel die Spalte E nach leeren oder Leerzeichen-Zellen sucht?
Falls ja,müsste doch im Then und Else-Teil das * durch die verwendte Zahl im IF ersetzt werden?!

btw:
Hab gerade festgestellt,dass ich erst ab Zeile 3 Beginnen darf,da sonst meine "Titelleiste" graugefärbt wird (VBA-noob face-sad )
JumpstylerPAF
JumpstylerPAF 26.03.2009 um 11:50:23 Uhr
Goto Top
@Uffschnapper:
Ich kann keinen Zelleninhalt eingeben,da es wie gesagt ne Fahrzeugtabelle ist und die Spatle E das Abmeldedatum enthält.

Könnte sein,aber VBA kann normalerweise (soweit mein Wissensstand noch richtig ist) alle Zellen auf einmal verarbeiten (Was ich eben mit dem Platzhalter * versuchen will). Somit müsste ich den Code nur einmal eingeben und gut. Ist mittlerweile die einfacherere Methode.
Und ich kann mich irren,aber meine Vermutung kann doch gar nciht so verkehrt sein oder?

@bastla:
Klang gut,aber es werden immer noch nur die leeren Zellen markiert.
Monschu
Monschu 26.03.2009 um 11:55:53 Uhr
Goto Top
mach bitte mal ein bild von dem was du eingegeben hast.

@ bastla: erkennt der auch leerzeichen als leer an oder als gefüllte zelle.
JumpstylerPAF
JumpstylerPAF 26.03.2009 um 11:58:33 Uhr
Goto Top
So wie ichs oben getippt hab.
Die 4 Formeln...dann markiert er mir entweder alle leeren Zellen oder alle mit Inhalt....je nachdem,ob die E-Zelle mit oder ohne Inhalt ist.

mir wurde gerade wieder von jemandem =$E10 <> " " geraten....

1
Monschu
Monschu 26.03.2009 um 12:02:13 Uhr
Goto Top
wenn du über nen datum gehst versuch mal ungleich 0 (leere zellen sind doch 0 oder?), da excel datums angaben ja in ganzen zahlen rechnet.
bastla
bastla 26.03.2009 um 12:04:44 Uhr
Goto Top
@Monschu
ISTLEER bedeutet (wie der Name vermuten lässt face-wink): "leer" (bzw "nix drin") - also auch keine Leerzeichen ...

Um "scheinbar leer" zu prüfen:
=GLÄTTEN($E3)=""
bzw für "mit Inhalt, der nicht nur aus Leerzeichen besteht":
=GLÄTTEN($E3)<>""
Grüße
bastla
Monschu
Monschu 26.03.2009 um 12:08:37 Uhr
Goto Top
war mir nur nicht sicher ob er nur leerzeichen abfängt damit. hatte es aber schon geahnt und bin mir jetzt zumindest für die nächsten stunden sicher ;).
JumpstylerPAF
JumpstylerPAF 26.03.2009 um 13:36:59 Uhr
Goto Top
Also jetzt hab ich zumindestens schonmal ne funktionierende Lösung gefunden.

Seltsamerweise funktioniert [Zellwert<>$E3=""] aber [Zellwert=$E3<>""] nicht.
rein logisch müsste es doch das selbe sein,nicht?

nun steht nur noc das Platzhalterproblem in VBA aus ,hinter das ich noch kommen muss face-big-smile


edit:

Hab den Code jetzt mal soweit (da ich gerade rausgefunden hab,dass man Platzhalter in ' und nicht " setzen muss ^^):

If Range("E'*'") = "" Or Range("E'*'") = " " Then  
    Range("'*':'*'").Font.ColorIndex = 8  
    
Else
    Range("'*':'*'").Font.ColorIndex = 1  
    
End If

Jetzt bekomme ich aber zwischen IF und Then schon:
Laufzeitfehler 1004:
Anwendungs- oder objektdefinierter Fehler
bastla
bastla 26.03.2009 um 16:50:34 Uhr
Goto Top
Hallo JumpstylerPAF!

Vorhin hatte ich leider kein Excel2007 zur Hand, daher jetzt nochmals der (für diesen Zweck wesentlich sinnvollere) Versuch, eine "Bedingte Formatierung" festzulegen:

  • Wähle alle benötigten Zellen einer Zeile (zB Zeile 10, Spalten A bis I) aus.
  • Erstelle folgende "Neue Regel":
    • > Formel zur Ermittlung der zu formatierenden Zellen verwenden
    • Werte formatieren, für die diese Formel wahr ist:
    • =NICHT(ISTLEER($E10)) oder =$E10<>"" oder auch =GLÄTTEN($E10)<>"" (letzteres für den Fall, dass ausschließlich Leerzeichen in der Zelle enthalten sind)
    • Lege über "Formatieren..." die gewünschte Formatierung (Schriftfarbe) fest
    • Nach zweimaliger Bestätigung mit "OK" sollte die Darstellung der markierten Zellen Deinen Vorstellungen entsprechen.
  • Das jetzt eingestellte Format lässt sich in weiterer Folge einfach per "Format übertragen" (Pinsel) oder über ein Kopieren auf weitere Zeilen anwenden.

Grüße
bastla
JumpstylerPAF
JumpstylerPAF 27.03.2009 um 08:47:25 Uhr
Goto Top
Recht herzlichen Dank!
Mit 'NICHT(ISTLEER())' kann ichs meinem Kollegen auch leichter erklären (seine Aussage: "Ich hab Excel immer von meinen Frauen können lassen" :D )