Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

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

Frage Microsoft Microsoft Office

Mitglied: JumpstylerPAF

JumpstylerPAF (Level 1) - Jetzt verbinden

26.03.2009, aktualisiert 09:30 Uhr, 49504 Aufrufe, 15 Kommentare

Moin moin!
Bin seit gestern am Rumsuchen und Verzweifeln

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:

01.
IF E3(Inhalt) Then 
02.
     Range("3:3").Font.ColorIndex = 8 (weiß grad nicht,was grau für nen Index hat) 
03.
Else 
04.
     Range("3:3").Font.ColorIndex = 1 
05.
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 ) ,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
Mitglied: Monschu
26.03.2009 um 10:30 Uhr
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
Bitte warten ..
Mitglied: JumpstylerPAF
26.03.2009 um 11:03 Uhr
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.
Bitte warten ..
Mitglied: Monschu
26.03.2009 um 11:07 Uhr
deshalb dann ungleich und am besten noch als zweites =" " fals mal ein leerzeichen getippt ist
Bitte warten ..
Mitglied: Uffschnapper
26.03.2009 um 11:24 Uhr
Hallo,
mit der "Bedingte Formatierung" bist du meiner Meinung nach besser dran als mit VBA
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
Bitte warten ..
Mitglied: bastla
26.03.2009 um 11:26 Uhr
... allerdings, wie schon angeführt, nicht "Zellwert ist", sondern "Formel ist":
=NICHT(ISTLEER($E3))
Grüße
bastla
Bitte warten ..
Mitglied: JumpstylerPAF
26.03.2009 um 11:32 Uhr
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.


01.
IF Range("E*") = "" OR Range("E*") = " " Then 
02.
     Range("*:*").Font.ColorIndex = 8 
03.
Else 
04.
     Range("*:*").Font.ColorIndex = 1 
05.
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 )
Bitte warten ..
Mitglied: JumpstylerPAF
26.03.2009 um 11:50 Uhr
@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.
Bitte warten ..
Mitglied: Monschu
26.03.2009 um 11:55 Uhr
mach bitte mal ein bild von dem was du eingegeben hast.

@ bastla: erkennt der auch leerzeichen als leer an oder als gefüllte zelle.
Bitte warten ..
Mitglied: JumpstylerPAF
26.03.2009 um 11:58 Uhr
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
Bitte warten ..
Mitglied: Monschu
26.03.2009 um 12:02 Uhr
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.
Bitte warten ..
Mitglied: bastla
26.03.2009 um 12:04 Uhr
@Monschu
ISTLEER bedeutet (wie der Name vermuten lässt ): "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
Bitte warten ..
Mitglied: Monschu
26.03.2009 um 12:08 Uhr
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 ;).
Bitte warten ..
Mitglied: JumpstylerPAF
26.03.2009 um 13:36 Uhr
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


edit:

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

01.
If Range("E'*'") = "" Or Range("E'*'") = " " Then 
02.
    Range("'*':'*'").Font.ColorIndex = 8 
03.
     
04.
Else 
05.
    Range("'*':'*'").Font.ColorIndex = 1 
06.
     
07.
End If
Jetzt bekomme ich aber zwischen IF und Then schon:
Laufzeitfehler 1004:
Anwendungs- oder objektdefinierter Fehler
Bitte warten ..
Mitglied: bastla
26.03.2009 um 16:50 Uhr
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
Bitte warten ..
Mitglied: JumpstylerPAF
27.03.2009 um 08:47 Uhr
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 )
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...