Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1096to1100
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

RGB codes ??

RGB codes ?
amintire
Hallo alle zusammen,
gibt es evtl. irgendwo eine Vorlage für die RGB Codes bei VBA in Excel?
Gruß amintire
AW: RGB codes ?
17.08.2009 20:32:52
Hajo_Zi
Hallo,
Sub RGBAnzeige()
'   auf Grundlage von einem Code von Nepumuk
Dim Rot As Long, Grün As Long, Blau As Long, Wert As Long
' ****** Ergänzung Hajo
Dim i As Integer
For i = 1 To 56
'       Farbe in Spalte A
Cells(i, 1).Interior.ColorIndex = i
Wert = Cells(i, 1).Interior.Color
On Error Resume Next
Rot = Wert Mod 256
Wert = (Wert - Rot) / 256
Grün = Wert Mod 256
Wert = (Wert - Grün) / 256
Blau = Wert Mod 256
'        MsgBox Rot & ", " & Grün & ", " & Blau
' ***** Ergänzung Hajo
Cells(i, 3) = Rot
Cells(i, 4) = Grün
Cells(i, 5) = Blau
Next i
'***** Ergänzung Hajo
Cells(57, 3) = "Rot"
Cells(57, 4) = "Grün"
Cells(57, 5) = "Blau"
Cells(58, 3) = "RGB Farbwerte"
End Sub

Anzeige
AW: RGB codes ?
17.08.2009 21:10:12
amintire
Hallo,
dass ist ja echt nicht schlecht. Danke.
RGB-Farben ermitteln
17.08.2009 21:18:32
NoNet
Hallo a.,
was meinst Du mit "RGB Codes bei VBA in Excel" ?
Meinst Du damit die RGB-Werte der 40 Zellfarben der (Standard-)Farbpalette ?
Oder die 16 Farben der Diagramm-Farbpalette ?
Oder welche Farben ?
Hier schonmal ein Beispiel (UDF), wie Du die RGB-Werte einer bekannten Farbe ermitteln kannst :
https://www.herber.de/forum/archiv/1088to1092/t1088874.htm#1088885
Um die Farben der aktuellen Zellen-Farbpalette zu ermitteln, kannst Du diesen Code verwenden :
Sub ZellenFaerben()
'17.08.2009, NoNet - www.excelei.de
Dim lngZ As Long
For lngZ = 1 To 56
Cells(lngZ, 1).Interior.ColorIndex = lngZ
Cells(lngZ, 2) = ActiveWorkbook.Colors(lngZ)
Cells(lngZ, 3).Resize(, 3) = rgbFarbe(ActiveWorkbook.Colors(lngZ))
Next
End Sub
Spalte A wird in der entsprechenden Farbe eingefärbt, in Spalte B steht anschließend der RGB-Wert (24 Bit), in den Spalten C:E die anteiligen Werte für Rot, Grün, Blau !
Gruß, NoNet
Anzeige
AW: RGB-Farben ermitteln
18.08.2009 05:19:26
amintire
Hallo NoNet,
ich würde gerne des in der Mappe so reinbauen, was in Zelle A1 steht soll auf der ganzen Mappe mit der Farbe bzw. den Format von Zelle B1 (nicht Hintergrundfarbe, evtl auch die Rahmen) gefärbt werden.
Was in Zelle A2 steht und des identisch ist mit soll mit B2 gefärbt werden.
Hab dein Code ausprobiert, aber da fehlt eine Sub-Funktion. Zumindest funktionert es nicht bei mir.
Gruß amintire
bitte Link nachsehen
18.08.2009 08:29:28
Erich
Hi Zehra,
hast du schon mal den Link angeklickt, den NoNet in seinen Beitrag geschrieben hat?
Hier kommst du direkt zu der fehlenden Funktion rgbFarbe(...):
https://www.herber.de/forum/archiv/1088to1092/t1088874.htm#1088885
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: bitte Link nachsehen
18.08.2009 19:02:26
amintire
Hi Erich,
Zitat: Hab dein Code ausprobiert, aber da fehlt eine Sub-Funktion. Zumindest funktionert es nicht bei mir.
Gruß amintire
AW: bitte Link nachsehen
18.08.2009 20:19:27
Erich
Hi Zehra,
das Zitat kannte ich doch schon - und ich dachte, ich hätte dazu etwas sinnvolles geschrieben...
Hier noch mal NoNets Code direkt hintereinander:

Sub ZellenFaerben()
'17.08.2009, NoNet - www.excelei.de
Dim lngZ As Long
For lngZ = 1 To 56
Cells(lngZ, 1).Interior.ColorIndex = lngZ
Cells(lngZ, 2) = ActiveWorkbook.Colors(lngZ)
Cells(lngZ, 3).Resize(, 3) = rgbFarbe(ActiveWorkbook.Colors(lngZ))
Next
End Sub
Function rgbFarbe(dblRGB)
'15.07.2009, NoNet
'Aufruf z.B. durch :
'MsgBox rgbFarbe(12345)(0) => ROT-Wert
'MsgBox rgbFarbe(12345)(1) => GRÜN-Wert
'MsgBox rgbFarbe(12345)(2) => BLAU-Wert
Dim R, G, B
R = dblRGB \ 256 ^ 2
G = (dblRGB - (256 ^ 2) * R) \ 256
B = ((dblRGB - (256 ^ 2) * R) - 256 * G)
rgbFarbe = Array(R, G, B)
End Function
Jetzt sollte die Funktion nicht mehr fehlen.
(Der obere Code ist aus diesem Thread, der untere aus dem Link, also vom 15.07.2009.)
Hilft dir das weiter?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: bitte Link nachsehen
18.08.2009 20:37:38
amintire
ZekA bitte oder amintire. ZekA vorname - amintire nickname. Alles andere wäre falsch.
Was hat der Code mit dem einen zu tun?
Ist ja fast der gleiche Code wie von Hajo.
Eigentlich brauch ich des genau umgekehrt. Ich formatiere die Zelle, und auf Klick soll alles was ich dann möchte formatiert werden.
Aber die RGB Codes sind schon mal nicht schlecht, besonders wenn man nicht weiß welche Farbe welche Zahl hat.
Danke.
Gruß amintire
Formate übertragen
19.08.2009 09:49:47
Erich
Hi ZekA, ( beenden wir unser Namensspielchen - ist seh das nicht so eng ;-)) )
so ganz habe ich noch nicht verstanden, was du möchtest.
Aber ich halte es für möglich, dass du diese RGB-Geschichte gar nicht brauchst.
So wie ich es sehe, möchtest du Formate, die du bestimmten Werten zugeordnet hast,
auf die gleichen Werte im Tabellenblatt anwenden.
Es gibt viele verschiedene Formate (Font, Schriftfarbe, Fett, Kursiv, diverse Rahmen, ...
Ich hab mich mal auf die Schriftfarbe und den einfachen Rahmen beschränkt
und damit einen ersten Versuch gestartet - probierst du's mal aus?
Du brauchst nur in der Tabelle irgendwo 4711 oder ggg oder so zu schreiben.
https://www.herber.de/bbs/user/63921.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
100%ig ist das aber nicht,...
19.08.2009 11:02:38
Luc:-?
...Erich,
aber als Bsp OK... ;-)
Du arbeitest mit Vollrahmen — bei Einzelrahmenseiten entstehen dann willkürliche Effekte. Um das zu vermeiden, hätten die Basiswerte/-formate entweder mit Leerzeilen oder in einer Zeile nach dem Schema Wert - Format - Wert - Format - Wert - Format notiert wdn müssen.
Ansonsten nette kreative Idee — und das zählt am meisten... ;-)
Gruß Luc :-)
andere Anordnung
19.08.2009 13:21:09
Erich
Hi ZekA und Luc,
deine (Lucs) Anregung habe ich aufgenommen: Werte und Formate sind jetzt in Zeile 2, abwechselnd.
Die beiden Tabellen verhalten sich leicht unterschiedlich: https://www.herber.de/bbs/user/63926.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: andere Anordnung
19.08.2009 20:24:49
amintire
Hi Erich,
danke für die Tabelle, vom Code nicht schlecht.
Ist des überhaupt möglich, dass ich nicht im VBA das Format vorgebe sondern in der Tabelle (Zelle) und dann wird des per Makro Ausführung (button) auf Wunsch ausgeführt.
Andererseits müsste ich die Formatierungen evtl jedes Mal im Code ändern bzw. auch erst rausfinden.
Gruß ZekA
Versuch einer Erklärung
20.08.2009 00:50:21
Erich
Hi ZekA,
"Ist des überhaupt möglich, dass ich nicht im VBA das Format vorgebe sondern in der Tabelle (Zelle)"
JA, DAS IST MÖGLICH! In der Mappe passiert genau das. In VBA ist kein Format festgelegt.
Verwendet werden die per Hand vorgegebenen Formate der Zellen B2, D2, F2, ....
für die in den Zellen A2, C2, E2, ... eingetragenen Texte.
Ändere doch mal z. B. in Tabelle1!F2 die Schriftfarbe und den Rahmen (Linie und Farbe).
Dann schreibst du unten in der Tabelle ggg in eine Zelle - und siehe da, die Zelle bekommt das Format von F2.
Du bestimmst die zu übertragenden Formate also in der Tabelle - nicht in VBA.
"und dann wird des per Makro Ausführung (button) auf Wunsch ausgeführt."
Die Mappe zeigt, dass das sogar automatisch, ohne Button, geht - mit dem Change-Ereignis-Makro.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
ok und mit hintergrundfarbe
20.08.2009 05:57:02
amintire
Hi Luc,
was für Fehler abgefangen?
Hi Erich,
ok jetzt ab ichs, hab es natürlich nur mit hintergrund farbe ausprobiert gehabt. sonst funktioniert es.
zumindest die farben die ich ausprobiert habe.
Gruß Zeka
AW: ok und mit hintergrundfarbe
20.08.2009 08:46:12
Erich
Hi ZekA,
Danke für deine Rückmeldung!
Die Hintergrundfarbe hatte ich absichtlich nicht berücksichtigt. Zitat von vorgestern:

Hallo NoNet,
ich würde gerne des in der Mappe so reinbauen, was in Zelle A1 steht soll auf der
ganzen Mappe mit der Farbe bzw. den Format von Zelle B1 (nicht Hintergrundfarbe,
evtl auch die Rahmen) gefärbt werden.
Was in Zelle A2 steht und des identisch ist mit soll mit B2 gefärbt werden.
Hier klappts jetzt auch im Hintergrund: https://www.herber.de/bbs/user/63934.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
P.S. @Luc: Du sprichst in Rätseln...
Alle eventuellen Fehler abzufangen, würde den Rahmen dieser Prozeduren doch sprengen, oder?
Anzeige
Du musst nur If IsError(...) Then zuerst...
20.08.2009 15:21:23
Luc:-?
...einbauen, Erich!
Wenn irgendeine Zelle im Eingabebereich einen Fehlerwert enthält/liefert - und das ist in der Praxis ja nicht unüblich - hängt sich deine (1.) Proz auf!
Gruß Luc :-?
AW: ok und mit hintergrundfarbe
20.08.2009 20:43:42
amintire
Hallo Luc...
wo genau baut man diesen Code mit ein?
Hallo Erich,
danke für deine Hilfe, hab das "nur" vergessen mit zuschreiben ;) Also nicht nur Hintergrundfarbe, evtl auch Rahmen und so (und Muster?)
Der Code ist aber verbesserungswürdig ;)
Wenn ich "ggg" wieder aus der Zelle lösche, sollte die dann automatisch auf den Nullpunkt (kein Hintergrund, schwarze Schrift) kommen.
Aber dies kann man auch mit Leerzeichen und eine Formatierung dafür erreichen.
Gruß ZekA
Anzeige
and now we proudly present ...
20.08.2009 21:31:21
Erich
Hi ZekA,
background colour, pattern - and: format deletion, but no error handling like Luc:
https://www.herber.de/bbs/user/63976.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
^^
20.08.2009 22:00:34
amintire
Danke... nicht schlecht.
Hier noch die F-Vermeidung!
21.08.2009 04:58:00
Luc:-?
Morrn, Amintire & Erich,
habe festgestellt, dass wohl schon diese kleine Ergänzung reicht...*

If IsError(rngC) Then
Exit For
ElseIf rngC = arrA(aa) Then
Das alte (richtiger Standard-)Format ergibt sich, wenn ein nicht in den Mustern angegebener Wert eingegeben wird, bspw Leerzeichen. Das/den kann man dann anschließend ja einfach wieder löschen.
Gruß Luc :-?
*Test einfach durch Eingabe von #NV - Formatierung fkt auch bei Fmln m.entspr Ergebnis, zB =WIEDERHOLEN("g";3) bzw =1/0
AW: Hier noch die F-Vermeidung!
21.08.2009 06:04:20
amintire
Hi Luc, weiß ehrlich gesagt gar nicht wo die Ergänzung hingeschrieben werden muss, bei mir kommt immer eine Fehlermeldung exit ohne for oder so ähnlich.
gruß amintire
wenns denn sein soll ...
21.08.2009 08:08:19
Erich
Hi ZekA und Luc,
tauscht doch mal die Zeile

If rngC = arrA(aa) Then

aus gegen die beiden Zeilen

If IsError(rngC) And Not IsError(arrA(aa)) Then
ElseIf rngC = arrA(aa) Then
Dann werden auch Fehlerwerte (z. B. =1/0 oder =nv() ) ordentlich verarbeitet - auch wenn z. B. in C2 ein Fehlerwert steht.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Genau das sollte er auch mit meiner Ergänzung...
21.08.2009 13:57:37
Luc:-?
...tun, Erich,
aber da hatte ich ihn wohl überschätzt, sonst hätte ich noch die Austauschzeile erwähnt... ;-)
Ansonsten hatte ich mich nicht so tief in dein Pgm vertiefen wollen und deshalb den 1.fkt Ansatz verwendet. Aber so ist's sicher besser.
Ich verwende solche Konstrukte "standardmäßig", um aus Zellfehlern resultierendes "Hängenbleiben" u.ä. zu vermeiden. Vielleicht kann man ja auch besondere Formatierungen für Fehlerwerte - zB rot oder ggf ;;; - vorsehen; habe das aber nicht ausprobiert...
Noch ein Tipp, Erich:
Ich benutze EventProcs idR als Verteiler, da jede ja nur 2x pro Worksheet (1x im Workbook-Modul) zur Verfügung steht. Dadurch wahre ich die Übersichtlichkeit, die sonst bei mehrfacher Verwendung für unterschiedl Aktionen leicht verloren gehen könnte wie etliche Forumsanfragen zu belegen scheinen...
Außerdem hat diese Vorgehensweise für mich noch einen gewissen "Selbstzweck" — ich habe einige Subroutinen, die benötigte EventProcs automatisch generieren. Bei Vorhandensein einer solchen fügen sie nur auskommentierte Codezeilen ein. Der Nutzer muss die Zeilen dann selber richtig positionieren und aktivieren. Das könnte bei "langen" EventProcs evtl schwierig wdn... ;-)
Gruß+schöWE, Luc :-?
funktioniert nid
21.08.2009 17:41:50
amintire
Hallo ihr beiden,
wenn ich die Zeilen austausche funktioniert das ganze nicht mehr
Erwartet ein Anweisungsende und Fehler beim Komplilieren Syntaxfehler.
Woran liegt das?
Besteht eigentlich die Möglichkeit, z.B. in Tabelle1 die ganzen Werte und Formate einzutragen und diese werden in den anderen Tabellen übernommen ? So müsste ich den Code in jeder Tabelle einfügen und die Formate auch.
Wie bekomme ich den Wert "" oder Leer in normalen zustand hin mit dem Code?
Gruß ZekA
funktioniert doch!
21.08.2009 18:59:12
Erich
Hi ZekA,
wenn du tatsächlich die Zeile so wie beschrieben ausgetauscht hättest, dürfte dieser Fehler nicht auftreten.
Das Code-Teilstück sollte jetzt so aussehen:

If Not IsEmpty(rngC) Then
For aa = 1 To UBound(arrA) Step 2
If IsError(rngC) And Not IsError(arrA(aa)) Then
ElseIf rngC = arrA(aa) Then
With Cells(2, aa + 1)
Vermutlich war das jetzt bei dir etwas anders... ;-))
Deine Frage 'Wie bekomme ich den Wert "" oder Leer in normalen zustand hin mit dem Code?'
habe ich gar gar nicht verstanden. Vielleicht hängt sie ja mit einer Korrektur zusammen,
die ich hier erledigt habe:

Option Explicit
Private Sub xWorksheet_Change(ByVal Target As Range)
Dim lngS As Long, arrA, rngA As Range, rngC As Range, aa As Long
lngS = Cells(2, Columns.Count).End(xlToLeft).Column
arrA = Application.Transpose(Application.Transpose(Cells(2, 1).Resize(, lngS)))
For Each rngA In Target.Areas
For Each rngC In rngA
If rngC.Row > 2 Then
If Not IsEmpty(rngC) Then
For aa = 1 To UBound(arrA) Step 2
If IsError(rngC) And Not IsError(arrA(aa)) Then
ElseIf rngC = arrA(aa) Then
With Cells(2, aa + 1)
rngC.Font.ColorIndex = .Font.ColorIndex         ' Schriftfarbe
With .Interior                                  ' Hintergrund
rngC.Interior.ColorIndex = .ColorIndex
rngC.Interior.Pattern = .Pattern     ' Muster
rngC.Interior.PatternColorIndex = .PatternColorIndex
End With
With .Borders                                   ' Rahmen
rngC.Borders.Weight = .Weight
rngC.Borders.ColorIndex = .ColorIndex
rngC.Borders.LineStyle = .LineStyle
End With
End With
Exit For
End If
Next aa
End If
If aa = 0 Or aa > UBound(arrA) Then
With rngC
.Font.ColorIndex = xlColorIndexAutomatic        ' Schriftfarbe
With .Interior                                  ' Hintergrund
.ColorIndex = xlColorIndexAutomatic
.Pattern = xlPatternNone             ' Muster
End With
.Borders.LineStyle = xlLineStyleNone            ' Rahmen
End With
End If
End If
Next rngC
Next rngA
End Sub
Zu deinem neuen Wunsch diese neue Mappe: https://www.herber.de/bbs/user/63993.xls
Da sind jetzt auch noch die Zahlenformate hinzugekommen (huch, 2,347).
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: funktioniert doch!
21.08.2009 20:52:41
amintire
Hi Erich,
also jetzt funktioniert es bestens.
Mit meiner Frage meinte ich dass ich in den Zellen Formeln drin habe, die sich auf etwas beziehen. Also eigentlich ganz simple wenn dann formel,
wenn zelle leer dann leer sonst...
Sooo.... wenn jetzt dann die Zelle leer ist wird die nicht richtig Formatiert. Der Rahmen ist weg, der untere Rahmen (Strich) ist da, dazwischen und oben nicht.
Ich weiß auch nicht wie man des machen könnte, ist aber irgendwie ein Schönheitsfehler.
Gruß ZekA
Habs jetzt...
21.08.2009 21:06:54
amintire
Hi Erich, vielen Dank erst Mal für deine Hilfe.
Ich hab das ganze gelöst indem ich in die Zelle ="" eingebe und daneben mit rahmen und ohne farbe formatiere.
Wenn jetzt als Ergebnis bei der Formel Leer rauskommt dann wird die richtig formatiert.
Gruß ZekA
Hast du auch evtl Fehler abgefangen? orT
20.08.2009 00:47:48
Luc:-?
Gruß Luc :-?
Noch was: Die Proc ist nicht fehlerneutral! owT
19.08.2009 11:15:59
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige