Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1312to1316
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zelle färben

Zelle färben
16.05.2013 22:31:54
walter
Guten Abend,
habe eine Datenbank.
Wenn in der Zelle K4 eine 0 (null) steht,
soll die Zelle L4 grün gefärbt werden.
Angefangen von Zeile 4 bis Ende, ende kann durch
Spalte A bestimmt werden.
freundlichst Walter mb

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Wie wär's mit BedingtFormat? :-> Gruß owT
16.05.2013 22:33:05
Luc:-?
:-?

Geht nicht da...
16.05.2013 22:35:25
walter
Hallo Luc,
geht nicht, da ich Daten aus einer fremdem Datenbank reinkopiere.
gruß walter mb

Wo reinkopiere? XlBlatt? Dann ginge es! owT
16.05.2013 22:37:40
Luc:-?
:-?

AW: Wo reinkopiere? XlBlatt? Dann ginge es! owT
16.05.2013 22:44:25
walter
Hallo Luc,
ich fülle die Datenbank aus einer anderen somit werden die Zellen in der Spalte L
überschrieben.
gruß walter mb

bitte mal schauen
16.05.2013 23:00:38
Walter
Hallo,
habe mal recherchiert, und dieses Makro gefunden.
Ich weiß allerdings wie ich dieses Makro anpassen soll.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngBereich As Range
Dim rngZelle As Range
Set rngBereich = Intersect(Target, Range("A:A"))  'dein x steht in Spalte A
For Each rngZelle In rngBereich
If rngZelle.Value = "x" Then
rngZelle.EntireRow.Interior.ColorIndex = 5 ' eine Zeile wird blau inkl. x
Else
rngZelle.EntireRow.Interior.ColorIndex = xlNone
End If
Next rngZelle
End Sub

Gruß walter mb

Anzeige
Zelle(n) färben
17.05.2013 01:55:49
Erich
Hi Walter,
wann soll gefärbt werden? Durch Makrostart per Hand und Prüfung der ganzen Spalte K in einem Rutsch?
Oder jeweils bei Änderung einer Zelle nur für diese Zelle?
Ein normales Makro könnte so aussehen (in ein normales Modul):

Option Explicit
Sub GruenWenn()
Dim lngQ As Long, arQ, zz As Long, rngG As Range, rngN As Range
With Sheets("Tabelle1")                            ' anpassen
lngQ = .Cells(.Rows.Count, 11).End(xlUp).Row    ' Spalte K = 11
If lngQ >= 4 Then
arQ = Cells(4, 11).Resize(lngQ - 3)
For zz = 1 To UBound(arQ)
If Not IsEmpty(arQ(zz, 1)) And arQ(zz, 1) = 0 Then
If rngG Is Nothing Then
Set rngG = Cells(zz + 3, 12)        ' Spalte L = 12
Else
Set rngG = Union(rngG, Cells(zz + 3, 12))
End If
Else
If rngN Is Nothing Then
Set rngN = Cells(zz + 3, 12)
Else
Set rngN = Union(rngN, Cells(zz + 3, 12))
End If
End If
Next zz                                               ' Grün
If Not rngG Is Nothing Then rngG.Interior.Color = RGB(0, 200, 0)
If Not rngN Is Nothing Then rngN.Interior.Color = xlNone
End If
End With
End Sub
Ein Ereignismakro, das auf Änderungen im Bereich K4:Kxxx reagiert, käme in den
Code des Tabellenblatts:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Row >= 4 Then
If Not Intersect(Target, Columns(11)) Is Nothing Then ' 0 steht in Spalte K
Target.Offset(, 1).Interior.Color = _
IIf(Not IsEmpty(Target) And Target = 0, RGB(0, 200, 0), xlNone)
End If
End If
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
Zelle(n) färben - Korrektur
17.05.2013 01:59:35
Erich
Hi Walter,
sorry, in GruenWenn() fehlten einige Punkte, ohne die die With-Klammer witzlos wäre.
Hier noch mal:

Sub GruenWenn()
Dim lngQ As Long, arQ, zz As Long, rngG As Range, rngN As Range
With Sheets("Tabelle1")                            ' anpassen
lngQ = .Cells(.Rows.Count, 11).End(xlUp).Row    ' Spalte K = 11
If lngQ >= 4 Then
arQ = Cells(4, 11).Resize(lngQ - 3)
For zz = 1 To UBound(arQ)
If Not IsEmpty(arQ(zz, 1)) And arQ(zz, 1) = 0 Then
If rngG Is Nothing Then
Set rngG = .Cells(zz + 3, 12)       ' Spalte L = 12
Else
Set rngG = Union(rngG, .Cells(zz + 3, 12))
End If
Else
If rngN Is Nothing Then
Set rngN = .Cells(zz + 3, 12)
Else
Set rngN = Union(rngN, .Cells(zz + 3, 12))
End If
End If
Next zz                                               ' Grün
If Not rngG Is Nothing Then rngG.Interior.Color = RGB(0, 200, 0)
If Not rngN Is Nothing Then rngN.Interior.Color = xlNone
End If
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Zelle(n) färben - Korrektur
17.05.2013 07:08:59
Hajo_Zi
Hallo Erich,
kleiner Hinweis, bei xlnone muss es ColorIndex sein. Jedenfalls falls auch Version größer 2007 eingesetzt wird.

Danke, Hajo! - und Korrektur...
17.05.2013 08:24:29
Erich
Hi Hajo,
....Color=xlNone funktioniert bei mir (XL2010) gut, ist aber wohl zu versionsabhängig.
Danke für deinen Hinweis - bei der Korrektur hier habe ich ihn umgesetzt.
In ein normales Modul:

Option Explicit
Sub GruenWenn()
Dim lngQ As Long, arQ, zz As Long, rngG As Range, rngN As Range
With Sheets("Tabelle1")                            ' anpassen
lngQ = .Cells(.Rows.Count, 11).End(xlUp).Row    ' Spalte K = 11
If lngQ >= 4 Then
arQ = Cells(4, 11).Resize(lngQ - 3)
For zz = 1 To UBound(arQ)
If Not IsEmpty(arQ(zz, 1)) And arQ(zz, 1) = 0 Then
If rngG Is Nothing Then
Set rngG = .Cells(zz + 3, 12)       ' Spalte L = 12
Else
Set rngG = Union(rngG, .Cells(zz + 3, 12))
End If
Else
If rngN Is Nothing Then
Set rngN = .Cells(zz + 3, 12)
Else
Set rngN = Union(rngN, .Cells(zz + 3, 12))
End If
End If
Next zz                                               ' Grün
If Not rngG Is Nothing Then rngG.Interior.Color = RGB(0, 200, 0)
If Not rngN Is Nothing Then rngN.Interior.ColorIndex = xlColorIndexNone
End If
End With
End Sub

und in das Modul des Tabellenblatts:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Count = 1 And .Row >= 4 Then
If Not Intersect(Target, Columns(11)) Is Nothing Then
If Not IsEmpty(Target) And Target = 0 Then      ' 0 in Spalte K?
.Offset(, 1).Interior.Color = RGB(0, 200, 0) ' Farbe in Sp. L
Else
.Offset(, 1).Interior.ColorIndex = xlColorIndexNone
End If
End If
End If
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Danke, Hajo! - und Korrektur...
17.05.2013 08:27:24
Hajo_Zi
Hallo Erich,
öffne die Datei die in 2010 bearbeitet wurde vor 2007 und Du wirst sehen, Sie haben eine Farbe. Das ist jedenfalls meine Erfahrung.
Gruß Hajo

Nachfrage @ Hajo
17.05.2013 08:48:09
Erich
Hi Hajo,
meinst du das jetzt bezüglich der Datei nach meinen Korrekturen oder vor diesen?
Wenn der Fehler jetzt noch da ist, sollte ich da ColorIndex mit xlNone statt xlColorIndexNone verwenden?
Ich kanns nicht testen - habe kein XL2007 am laufen...
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Nachfrage XlNone
17.05.2013 08:51:34
Hajo_Zi
Hallo Erich,
meine Erfahrung mache ich ab 2010 Color=xlnone, ist es in der Version Farblos.
Öffne ich diese Datei aber danach in einer Version vor 2007 haben die Zellen eine Farbe.
Ich habe jetzt hier nur 2010 und kann es nicht testen.
Gruß Hajo

Das ist wohl schon immer so gewesen, ...
17.05.2013 14:12:53
Luc:-?
…Erich;
ein FarbIndex xlNone=-4142 (Element von Constants ) gilt auch nur für .ColorIndex. Als .Color wird auch in diesen Fällen stets vbWhite=16777215 (Element von ColorConstants ) zurückgegeben, obwohl die Zellfarbe dann nicht wirklich weiß (wohl nur der Xl-HG) ist, was man bei Export als GIF bemerken kann (Schrift wird hier verschwommen dargestellt, bei echt-weißem Zell-HG nicht!). Ähnliches gilt auch für xlAutomatic=-4105 (Element von Constants ), nur dann eben vbBlack=0 (Element von ColorConstants ). Die Neuerungen ab Xl2007 liegen hier wohl eher auf dem Gebiet mehrerer Farbeinträge pro Zelle (zB bei Text), die früher als Gesamtheit mit Null angegeben wurden, jetzt aber dummerweise eher als xlNone erscheinen.
Gruß Luc :-?

Anzeige
Korrektur der Korrektur
17.05.2013 10:19:18
Erich
Hi Walter,
da es xlColorIndexNone vermutlch erst ab XL2007 gibt, verwende besser xlNone
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Super Danke aber wie kann ich die Farbe
17.05.2013 11:15:37
walter
Hallo Erich,
super Klasse, DANKE !
Wie kann ich die Farbe ändern ?
For zz = 1 To UBound(arQ) ?
z.B. in Hellrot ...
mfg Walter mb

andere Farbe
17.05.2013 12:02:38
Erich
Hi Walter,
das ist doch nicht so schwer, z. B. mit
....Interior.Color = RGB(255, 0, 0)
Wenn du ein anderes Hellrot möchtest (es gibt viele, wir haben insgesamt ca. 16,7 Mio. Farben),
kannst du einfach per Makroaufzeichnung feststellen, welcher Wert für Color oder ColorIndex besser passt.
Da kommt dann so etwas raus wie
....Interior.Color = 255
oder
....Interior.ColorIndex = 3
Schau dir auch mal die VBA-Hilfe zur Funktion RGB() an. :-)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
Deine Vermutung ist falsch, ...
17.05.2013 14:22:52
Luc:-?
…Erich,
xlColorIndexNone und xlColorIndexAutomatic (übrigens die einzigen Elemente von xlColorIndex ) gab es auch schon früher (mit gleichen Werten wie die anderen beiden). Diese Dopplungen sind sicher dem Umstand geschuldet, dass nun mal viele Pgmierer an Xl gearbeitet haben und recht verschwenderisch mit der Vergabe von (Enumerations-)Konstanten umgegangen sind. Die Wd-Pgmierer waren da eher (zu) enthaltsam. ;-)
Gruß Luc :-?

OT: Falls du mal mit Farben experimentieren ...
17.05.2013 14:31:27
Luc:-?
…willst, Walter,
hätte ich da ja noch ein Tool, das den ausgewählten Zellbereich lt seinem Inhalt färbt. Der muss dann natürlich eine Farbangabe (verschiedene Formen möglich!) sein. Das Tool setzt allerdings mein AddIn FXsubset bzw nach kleiner Änderung meine UDF MaskOn (bzw MaskOnX, wohl beide im Archiv) im Minimalumfang voraus. Allerdings können die entsprd Passagen auch durch Like- bzw RegExp-Konstruktionen ersetzt (oder mit Fktionalitätseinbuße weggelassen) wdn.
Gruß Luc :-?

Anzeige
Danke an alle besonder Erich, weil --))
17.05.2013 18:09:16
walter
Hallo zusammen,
DANKE an alle, jedoch besonders an Erich, der
sich sehr viel Mühe mit dem Makro gemacht hat.
Schöne Pfingsten !!!
mfg Walter mb

Danke Walter, auch allen schöne Pfingsten! (owT)
17.05.2013 19:35:02
Erich

...Das könnte dann so aussehen, ...
17.05.2013 20:12:06
Luc:-?
…Walter:
 MNOPQ
153&h0{0.0.0}qbBlackqbGreyvbBlack
154#F8696B{0.0.255}qbDarkblueqbBluevbBlue
155FFFF99'{0.255.0}qbGreenqbBrightgreenvbGreen
1566B69F8{0.255.255}qbBluegreenqbCyanvbCyan
157&99FFFF{255.0.0}qbDarkredqbRedvbRed
1588109667{255.0.255}qbVioletqbMagentavbMagenta
159H99FFFF{255.255.0}qbBrownqbYellowvbYellow
160&H7BBE63{255.255.255}qbLightGreyqbWhitevbWhite
161blau125-125-125{125;125;0}rot1
(FarbNamen vorerst nur bedingt - VB/QB-Konstt/Werte)
Ansonsten ebenfalls FroPf!
Gruß Luc :-?

Anzeige
Nochmals Danke Luc. -)
17.05.2013 20:37:50
Walter

Na dannich; jedankt haste schon... ;-) owT
17.05.2013 22:01:44
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige