Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1384to1388
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

Farbnummer auslesen

Farbnummer auslesen
17.10.2014 16:31:39
Peter

Guten Tag
Ich möchte mit einer selbstgebastelten Funktion die Schriftfarbe einer Zelle auslesen (Bei Erfolg möchte ich auch gerne die Füllfarbe auslesen).
Folgender Versuch hat nicht geklappt:

Public Function Farbnummer_Schrift(rng As Range)
Dim strTab As String, lngZe As Long, lngSpa As Long
strTab = rng.Parent.Name
lngZe = rng(1, 1).Row
lngSpa = rng(1, 1).Column
Farbnummer_Schrift = Worksheets(strTab).Cells(lngZe, lngSpa).Interior.ColorIndex
End Function
Wer kann mir weiterhelfen?
Gruss, Peter

39
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Farbnummer auslesen
17.10.2014 16:36:33
Hajo_Zi
Hallo Peter,
ich hätte nur 2 Zeilen benutzt.
ActiveCell.Interior.Color
ActiveCell.Font.Color

AW: Farbnummer auslesen
17.10.2014 16:41:26
Peter
Hallo Hajo
Danke.
Allerdings hilft mir das noch nicht weiter. Ich will die Funktion in der Excel-Tabelle eintragen und als Argument eine Zelle übergeben.
Hast du da auch etwas parat?
Gruss, Peter

AW: Farbnummer auslesen
17.10.2014 16:44:30
Hajo_Zi
Hallo Peter,
im ersten Beitrag war VBA.

Tabelle1
AW: Farbnummer auslesen
17.10.2014 16:44:48
Daniel
Hi
im Prinzip sollte folgender Code reichen:
Public Function Farbnummer_Schrift(rng As Range) as long
Farbnummer_Schrift = rng(1).Interior.ColorIndex
End Function
allerdings musst du folgendes beachten:
1. den ColorIndex mit seinen 56 Farben gibt es in deiner Excelversion nur noch aus kompatibilitätsgründen.
Seit Excel 2007 kannst du den 24-bit-RGB-Farbraum frei verwenden. Inwieweit die Ermittlung des ColorIndexes zu einem sinnvollen Ergebnis führt, kann ich dir nicht sagen.
2. Die Änderung eines Formats löst in Excel keine Neuberechung der Formeln aus.
Das passiert nur, wenn sich ein Zellwert ändert.
Dh wenn du damit sinnvoll arbeiten willst, musst du erst die Farbe der Zelle ändern und dann die Formel eintragen
3. auf diese Weise kannst du nur auf die normale Farbe zugreifen. Farben die über die Bedingte Formatierung erzeugt werden, können zur Zeit mit VBA nicht ermittelt werden (es gibt zwar versuche, dies zu tun, daber die sind so aufwendig, dass sie für den Normalanwender nicht praktikabel sind)
Gruß Daniel

Anzeige
Hinweis: Durch Drücken von F9 kann man ...
17.10.2014 17:53:55
Luc:-?
…das Ergebnis einer volatilen Fkt aktualisieren, Peter;
falls du die UDF selbst nicht volatil machen willst, kannst du sie in der ZellFml auch mit einer geeigneten volatilen StandardFkt wie bspw JETZT() kombinieren.
Das Auslesen einer durch die Erfüllung einer BedingtFormatRegel angezeigten Farbe (die nicht die Farbe des ZellObjekts ist!) ist auch mit einer UDF möglich, nur existiert mW zZ noch keine komplette Lösung auf UDF-Basis für Xl ab Version12 (2007).
Gruß, Luc :-?

AW: Hinweis: Durch Drücken von F9 kann man ...
17.10.2014 19:32:36
Ewald
Hallo,
Die Farbnummer(RGBlong) kann nur mit Color ausgelesen werden.
Den Farbindex in der Colorpalette mit Colorindex
Colorindex sollte man ab 2007 nicht mehr verwenden(wie oben schon gesagt veraltert), was aber schlimmer ist,es können falsche Ergebnissewiedergegeben werden.
Als Beispiel mal folgendes Makro ausführen
Sub Farbe()
Dim a
ActiveCell.Interior.Color = RGB(237, 255, 255)
a = ActiveCell.Interior.ColorIndex
MsgBox a
ActiveCell.Offset(0, 1).Interior.ColorIndex = a
End Sub
Eigentlich sollten die Farben der zwei Zellen gleich sein, sind sie aber nicht.
Zur bed. Formatierung, wenn es nur um die Hintergrund- oder Schriftfarbe geht,so kann dies auch sehr einfach ausgelesen werden.
Ist aber hier nicht das Thema.
Gruß Ewald

Anzeige
AW: Farbe der bedingten Formatierung
17.10.2014 20:52:09
daniel
Hi Ewald
Auch wenn es hier nicht das Thema ist, wenn du einen sehr einfachen Weg weisst, wie man die Farbe einer Zelle, die durch die bed. Formatierung entstanden ist lesen ka kann, würde mich das schon interessieren. Das wird doch öfters gefragt.
Gruss Daniel

Das wundert mich nun doch, ...
18.10.2014 00:01:49
Luc:-?
…Daniel,
denn vor wenigen Wochen hat ein gewisser Daniel noch erklärt, dass ihn eine diesbzgl Diskussion zwischen Ewald/Gandalf und mir nicht interessiert hätte… :->
Außerdem kann es bei einem der zähesten Xl-VBA-Probleme keinen sehr einfachen, höchstens einen relativ einfachen Weg geben! Dazu ist hier und anderswo schon viel geschrieben worden.
Vermutlich meint Ewald eine Methode (hier und anderswo, auch von Gandalf im OL-XlFormate-TeilForum, von verschiedenen Autoren gezeigt), aus der 1.MethodenGruppe, die auf auf der Windows-Oberfläche gezeigten bzw in der XML-Darstellung vorhandenen FarbPixeln und ihrer Auszählung basiert, was tatsächlich nur bei monochromen Farben fktionieren kann → die häufigsten sind dann die des Hintergrunds, die weniger häufigen die der Schrift. Das erforderliche Pgm würde allerdings mit Sicherheit unter die „Daniel-Kategorie“ abstoßend fallen… :->
Ewalds eigene Entdeckung (ab Xl12, 3.MethodenGruppe) wurde hier auch schon erwähnt. Ihr Prinzip scheint einfach, die Ausführung (auch mit den notwendigen Einschränkungen) kann es aber auch „in sich“ haben, je nachdem wie die konkrete BedingtFormatierung aussieht und wie man das Ergebnis darstellen bzw einbinden will. Außerdem erfordert es von vornherein Berücksichtigung in den bzw nachträgliche Ergänzung der BedingtFormatRegeln.
Von der 2.MethodenGruppe (auf Basis der RegelAuswertung), in der es wohl die meisten LösungsVersuche gibt (auch Lösungsbspp -bis Xl11!- von mir im Archiv), muss ich wohl gar nicht erst anfangen, obwohl das Hajo/Beverly-Tool zur XlTabbDarstellung in HTML garantiert eine Methode verwendet, die hierher gehört.
Von der Jeanie weiß ich, dass ihr Kreator das über reines VB ermittelt. Bei anderen derartigen Tools (wie bspw das von Bamberg) kannst du ja mal deren Autoren fragen… :-]
Fazit: Wortwörtlich sehr einfach dürfte keine dieser Methoden sein! Aber viell spendiert MS ja irgendwann mal eine zusätzliche BedFmt-Eigenschaft Erfüllt (zur Regel, wie bei der Validation; oder hat es in 365 schon getan?), was es dann wirklich sehr einfach machen könnte…?!
Gruß, Luc :-?

Anzeige
AW: Das wundert mich nun doch, ...
18.10.2014 00:36:20
Daniel
nunja, Ewald schreib doch, dass er einen sehr einfachen Weg kennt, und das bei Basiskenntnissen des Fragestellers.
Bei dem Niveau "Basiskenntnisse" kann "sehr einfach" nicht viel schwieriger sein als das direkte Abfragen einer bestimment Eigenschaft und wenn Ewald der Meinung ist, dass er eine sehr einfache Methode gefunden hat, dann wäre es doch schön, wenn er sie vorstellt.
Dann wäre dieses schwierige Problem entlich gelöst und ihr müsstest euch nicht mehr mit diesen komischen Methodengruppen rumärgern, sondern einfach Ewalds Methode anwenden.
Die Wege, die bisher versucht wurden, sind ja alles andere als einfach, deswegen wäre ein sehr einfacher Weg ein echter durchbruch.

Anzeige
Ich schrieb ja, was Ewald vermutlich meint, ...
18.10.2014 04:18:50
Luc:-?
…aber das ist nur in der Anwendung einfach (quasi ähnlich wie mein VbZellenTool!), nicht aber im Nachvollziehen. Außerdem kann man damit nur die genannten FarbFormatierungen feststellen, weiter nichts! Das ist also „nur“ ein Hilfsmittel für einen ganz bestimmten, klar begrenzten Zweck und kein UniversalTool. Das wäre letztlich bisher nur nach MGruppe2 über die Auswertung der Regeln möglich und das ist hochkomplex und für den neuen MenüPkt1 100%ig nur für FarbSkalen möglich (Balken müssten nachkonstruiert und Symbole komplett durch etwas Anderes in der Wiedergabe ersetzt wdn). Damit sind die in Klammern aufgeführten Features mit einer reinen HTML-Darstellung (oft der HptZweck solcher Bemühungen) unverträglich. Mit Ewalds Eigenentwicklung kann der ganze MenüPkt nicht ausgewertet wdn und mit dem Pixel-Tool ebenfalls nur die FarbSkalierung.
Luc :-?

Anzeige
AW: und ich wollte von Ewald wissen ...
18.10.2014 11:21:38
Daniel
was er tatsächlich meint.

...Was dir im Sinne deines Verständnisses von ...
18.10.2014 12:14:40
Luc:-?
sehr einfach nicht weiterhelfen würde…! :->
Luc :-?

AW: ...Was dir im Sinne deines Verständnisses von ...
18.10.2014 12:39:45
Daniel
vielleicht können wir uns darauf einigen, das "sehr einfach" im Sinne des Fragestellers mit Basiskenntnisse VBA, (so wie angegeben) zu verstehen?

Können wir zwar, aber das war ja ohnehin ...
18.10.2014 14:52:03
Luc:-?
…schon die ganze Zeit deine Intention. Allerdings hatte Ewald das wohl gerade deshalb nur beiläufig erwähnt. „Einfach“ heißt hier tatsächlich nur in der Anwendung als Komplett-Tool, wenn man wenigstens weiß, wie es zu handhaben ist. Da sich Ewald ausdrücklich auf Farben bezogen hat, kann er eigentlich nur das gemeint haben, denn mit seiner Entwicklung könnte, mit den genannten Einschränkungen, jedes BedingtFormat bestimmt wdn. Das ist auch mit einer Lösung nach MGruppe2 prinzipiell möglich wie bspw auch hier für XlVss vor Xl12 gezeigt wird.
Luc :-?

Anzeige
AW: Können wir zwar, aber das war ja ohnehin ...
18.10.2014 15:08:20
Daniel
nuja, neben dem "können" brauchst auch das "wollen" und das fehlt bei dir.
dass die Anwendung einer Funktion "FarbeDerZelleBedingtFormatiert(Zelle as Range) as Long" einfach ist, steht ausser Frage.

Können vs Wollen; woraus willst du das ...
18.10.2014 15:42:12
Luc:-?
…schließen, Daniel,
etwa daraus, dass ich hier (und anderswo) keine Komplett-PgmCodes zu dem Thema einstelle (um mir dann von Leuten deines Schlags sagen lassen zu müssen, sie seien „abstoßend“)…?! :->
Zu den dabei zu lösenden TeilProblemen habe ich hier und anderswo wohl schon genug geschrieben und zur speziellen BedFmt-Fml-Nur-Lokal-Problematik und der dadurch angeblich fehlenden VBA-Evaluierungs­möglichkeit auch Hinweise (und sehr einfache BspCodes an-)gegeben, die man allerdings richtig einsetzen muss, was ja einem VBA-Könner nicht schwer fallen sollte…
So ähnlich wie von dir gezeigt kann es auch fktionieren, nämlich mit meiner UDF actCellForm für XlVss bis 11, nur gibt die alle vorhandenen ZellFormate wieder und hinter ihr steht noch ein ganzes Bündel weiterer Fktt, die intern aufgerufen wdn, also letztendlich streng genommen doch nicht „sehr einfach“…
Luc :-?

Anzeige
AW: Können vs Wollen; woraus willst du das ...
18.10.2014 15:58:00
Daniel
ich schließe das aus deinem Verhalten mir und anderen Forumsteilnehmern, die nicht in der Lage sind deinen Ausführungen zu folgen, gegenüber heraus.
genauso hier, du schreibst "was einem VBA-Könner nicht schwer fallen sollte"
die meisten Fragesteller sind hier aber keine VBA-Könner, sondern Anfänger bis leicht Fortgeschrittene.

Genau für diese Klientel schreibe ich ja auch ...
18.10.2014 18:10:45
Luc:-?
…UDFs (und mitunter auch andere Tools) als Komplett-Lösung, keine Code-Bröckchen, was ich nur dann tue, wenn es nach FaktenLage ausreichend erscheint.
Meine Erläuterungen folgen idR der Sachlage und nicht unbedingt Verständnis­Fähigkeit bzw -Willen der Fragesteller, denn das kann auch bei angegebenem Level nicht immer zutreffend eruiert wdn (→ Faustregel: Wer pgmieren will, sollte sich zuerst mit der Syntax der jeweiligen Sprache und den Werkzeugen, hier dem VBE, vertraut machen; anderenfalls läuft das auf einen PgmierAnfängerKurs hinaus, was nunmal nicht die Aufgabe eines Forums sein kann!). Außerdem ist ein Helfer keine „Tibetanische Gebetsmühle“, die sich ständig wiederholen muss → da muss dann schon mal aufs Archiv verwiesen wdn!
Dass du meinen Ausführungen nicht folgen könntest, wäre eine neue Erkenntnis für mich, und die von dir beklagte Behandlung durch mich, hast du ganz allein dir selbst zuzuschreiben (und wenn es nur das ist, dass dein AllerweltsNickname Verwechslungen provoziert!).
Luc :-?

Anzeige
AW: Genau für diese Klientel schreibe ich ja auch ...
18.10.2014 18:33:00
Ewald
Hallo,
Habe ich mir doch gedacht, das dies wieder eine größere Diskussion gibt.
Wenn man an die Bedfor rangeht, ist immer ein gewisser Aufwand nötig.
Je nach Methode eben mal mehr oder weniger.
Vor allem sollte eigentlich klar sein, das die Formate Datenbalken, Farbscalen, Symbole nichts mit der normalen Formatänderung der Zelle durch bedingte Formatierung zu tun hat.
Was schon nicht in der normalen Tabelle geht, funktioniert auch nicht mit Bedfor.
Wenn ich eine Zelle mit Fülleffekt mit „ActiveCell.Interior.Color „ abfrage, bekomme ich ein falsches Ergebnis, dies ist bei den oben genannten Formaten bei Bedfor nicht anders.
Ich muss wenn ich diese Formate mit berücksichtigen will, erstmal die verwendete Bedfor-Type abfragen und dann jeweils darauf reagieren.
Das dies dann auch mehr Aufwand bedeutet, sollte klar sein.
Berücksichtige ich nur die durch Bedfor geänderte Zellformatierung wird es einfach, und genau dies habe ich mit „Einfach“ gemeint.
Außerdem liefert die Bedfor ab 2007 noch ein Werkzeug, was die Auswertung erleichtert.
Die einfachste Lösung wäre die Verwendung von html , da hier die Farbe der durch Bedfor geänderten Zelle als Zellfarbe wiedergegeben wird.
Hier spielt aber die Office-Zwischenablage nicht mit.
Folgendes geht aber
Zelle kopieren, Kopiermodus beenden, Zwischenablage öffnen, Klick auf den obersten Eintrag und schon hat die aktive Zelle die Bedforfarbe als normale Zellfarbe
.
Dies läßt sich aber mit VBA nicht nachvollziehen.
Durch die Möglichkeit ab Excel2007 einer Bedfor auch ein benutzerdefiniertes Format mitzugeben, wird es jetzt aber auch so einfach.
Bei einer Zahlenzelle gibt man vor dem, oder bei Text nach dem normalen Format einfach ein „ „ ein für die erste Formatierung. Bei der zweiten dann zwei und bei der dritten dann zwei/drei Leerzeichen.
Werden Bedfor‘s in der Reihenfolge verschoben, muss das benutzerdefinierte Format natürlich angepasst werden.
Die Auswertung erfolgt dann über den Zellentext, der ja das Format dann enthält.
Hier mal ein Beispiel für eine Zelle mit 3 Bedfor’s für Zahlen.
Sub Bedforfarbe()
Dim a
Dim b
Dim y
Dim i
For i = 1 To Len(ActiveCell.Text)
If Mid(ActiveCell.Text, i, 1) = " " Then
y = y + 1
End If
Next
Select Case y
Case 0
b = ActiveCell.Interior.Color
Case 1
b = ActiveCell.FormatConditions(3).Interior.Color
Case 2
b = ActiveCell.FormatConditions(2).Interior.Color
Case 3
b = ActiveCell.FormatConditions(1).Interior.Color
End Select
MsgBox b
End Sub
Das sollte auch für einen Anfänger möglich sein, es zu verstehen.
Gruß Ewald

Anzeige
AW:Einfachheit die zweite
19.10.2014 00:37:52
Ewald
Hallo,
die obere Methode ist einfach zu handhaben und der Code ist einfach.
Nur was ist wenn jetzt Fehler bei der Eingabe des benutzerdefinierten Formats passieren oder Bedfors verschoben werden ohne anzupassen.
Resultat: Ergebnis ist falsch.
Nun gut, dann machen wir es temporär mit einem Makro
Sub AcBedFor()
Dim i As Long
Dim strFor1 As String   'Zellformat
Dim strFor2 As String   'Zusatzformat
Dim strFor3 As String   'Testformat
Dim strFor4 As String    'Zellformat
Dim t As Double         'Type
Dim x As Double
Dim y As Double
Dim z As Long
Dim Farbe As Long
Dim Ergebnis As String
If ActiveCell.FormatConditions.Count = 0 Then
MsgBox "Zelle hat keine bedingte Formatierung"
Exit Sub
End If
strFor4 = ActiveCell.NumberFormat
For i = 1 To ActiveCell.FormatConditions.Count
t = ActiveCell.FormatConditions(i).Type
If t = 3 Or t = 4 Or t = 6 Then
z = i
x = t
GoTo Weiter
Else
strFor1 = ActiveCell.FormatConditions(i).NumberFormat
strFor2 = Chr(34) & "(" & i & ")" & Chr(34)
If IsNumeric(ActiveCell.Value) Or IsDate(ActiveCell.Value) Then
strFor3 = strFor2 & " " & strFor1
Else
strFor3 = "@" & " " & strFor2
End If
ActiveCell.NumberFormat = "General"
With ActiveCell.FormatConditions(i)
.NumberFormat = strFor3
End With
End If
Weiter:
Next
If IsNumeric(ActiveCell.Value) Or IsDate(ActiveCell.Value) Then
If Mid(ActiveCell.Text, 1, 1) = "(" Then
y = Mid(ActiveCell.Text, 2, 1)
Else
y = 0
End If
Else
If Right(ActiveCell.Text, 1) = ")" Then
y = Mid(ActiveCell.Text, Len(ActiveCell.Text) - 1, 1)
Else
y = 0
End If
End If
For i = 1 To ActiveCell.FormatConditions.Count
t = ActiveCell.FormatConditions(i).Type
If t = 3 Or t = 4 Or t = 6 Then
GoTo Ende
Else
ActiveCell.NumberFormat = strFor4
With ActiveCell.FormatConditions(i)
.NumberFormat = strFor1
End With
End If
Ende:
Next
For i = 1 To ActiveCell.FormatConditions.Count
t = ActiveCell.FormatConditions(i).Type
If t = 10 Then
If ActiveCell.Value = "" Then y = i
End If
If t = 16 Then
If IsError(ActiveCell.Value) Then y = 1
End If
Next
'MsgBox "Formatierung " & y & " ist aktiv"
If z > 0 Then
'If x = 3 Then MsgBox "Außerdem ist die bed.Formatierung Farbscala aktiv"
'If x = 4 Then MsgBox "Außerdem ist die bed.Formatierung Datenbalken aktiv"
'If x = 6 Then MsgBox "Außerdem ist die bed.Formatierung Symbolsatz aktiv"
End If
If y > 0 And z = 0 Then Ergebnis = y
If y = 0 And z > 0 Then Ergebnis = z
If y > 0 And z > 0 Then Ergebnis = y & "/" & z
If Ergebnis = y Then
Farbe = ActiveCell.FormatConditions(y).Interior.Color
MsgBox "Formatierung  " & y & "  ist aktiv und die Farbnummer ist  " & Farbe
Else
MsgBox Ergebnis
End If
End Sub
Jetzt ist der Code zwar schwerer zu verstehen, dafür fallen aber die manuelle Eingabe und damit Fehlerquellen weg.
Was ist nun einfacher, ihr dürft weiterstreiten.
Gruß Ewald
PS. Der jetzige Code geht auch etwas weiter, er zeigt alle aktiven Bedfor's an, gibt nur bei den Typen Datenbalken,Farbscala,Symbole keine Farbe an. Denn diese sind immer aktiv und es können auch zwei Bedfor's aktiv sein.

Na, ich glaube ja, ...
19.10.2014 14:22:50
Luc:-?
…Ewald,
das war wohl (nur auf den nachfragenden Daniel bezogen) verlorene Liebesmüh, denn Derartiges dürfte wohl kaum in sein Berufungs-/Sendungs­Schema passen… ;-]
Ich hatte auch auf der Strecke interessehalber weiter­gearbeitet, mit dem Ziel, dafür eine UDF-Lösung zu erarbeiten, bin dann aber, unterbrochen durch 2 Urlaubsreisen, auf einer Vorbereitungs-UDF zur Unterstützung der notwendigen BedingtFormat-Ergänzungen hängen geblieben. Abgesehen davon muss ich mich auch irgendwann mal wieder um meine eigene Methode kümmern und diese zum Abschluss bringen.
Gruß + schöSo, Luc :-?

AW: Tatsächlich nicht besonders kompliziert
20.10.2014 01:26:59
Daniel
Dafür kreativ.
Auf die Idee, das man mit .TEXT auch den Bedingt-Formatierte Zellinhalt abfragen kann, und dann das Zahlenformat verwenden kannst, um die Infos zu übertragen muss man auch erst mal kommen.
Letztendlich ist die Lösung dieses Problems doch nur eine Fingerübung, l'art pour art
Als Ersteller der Datei kenne ich ja meine Bedingungen und die zugeordneten Farben und kann so immer über die Bedingung direkt gehen ohne die Bedingte Formatierung auswerten zu müssen.
Über die Bedingte Formatierung direkt zu gehen wäre nur dann notwendig, wenn ich als Probrammierer die Bedingungen und Grenzwerte nicht kenne und das ist doch nur dann der Fall, wenn der Anwender selbst die Bedingte Formatierung verändert.
Das sollte in einer halbwegs anwenderfreundlichen Anwendung aber nicht vorkommen, wenn der Anwender irgendwelche Parameter ändern können soll, dann stellt man hierfür eine kleine Eingabemaske zur verfügung und dann kennt man die Daten wieder und muss sie nicht aus der Bedingten Formatierung auslesen.
Gruß Daniel

und ich für die andere
19.10.2014 13:41:58
Daniel
Und ich schreibe für die andere Klientel.
Außerdem ist es auch nicht mein Ziel, jemanden eine fertige Komplettlösung in die Hand zu geben.
Vielmehr versuche ich, ihm dabei zu Helfen, seine VBA-Fähigkeiten soweit zu verbessern, dass er in der Lage ist, sich zukünftig seine Lösungen selber zu erstellen, ohne auf fremde Hilfe angewiesen zu sein.
Gruß Daniel

Dieses Ziel wirst du wohl nie 100%ig erreichen ...
19.10.2014 14:11:33
Luc:-?
…können, Daniel,
denn die meisten Frager dürften dafür weder Zeit noch Geduld aufbringen (können), während die Probleme aber bestehen bleiben. Wenn du hier einen AnfängerPgmierKurs aufmachen willst, bitte sehr → viel Spaß! Mir sieht das aber nicht nur nach Selbstlosigkeit aus, was du hier treibst…
Interessant ist auch, dass dein PrimärInteresse offensichtlich gar nicht Ewalds AW gi/alt…
Fällt wohl auch unter „abstoßender Code“… :->
Na dann mach mal schön „Klein-Klein“ weiter, wenn das dein Ego befriedigt!
Mahlzeit, Luc :-?

Vielleicht wäre es so besser
20.10.2014 00:06:43
Ewald
Hallo,
ich glaube ein Miteinanderreden wäre sinnvoller als das Gegeneinanderreden gewesen.
Natürlich gibt es unterschiedliche Wissensstände die man aus der Angabe ableiten kann. Was aber nicht bekannt ist, was will er eigentlich, will er nur eine Lösung für sein Problem oder will er wissen wie er sein Problem lösen kann.
Jemand möchte die auf gelaufenen Zinsen für seine Wertpapiere berechnen.
Ich kann jetzt eine Lösung anbieten, wie er das berechnen kann, ich kann aber auch direkt sagen, Excel hat eine Funktion die das kann, da brauchst du nur deine Werte eintragen.
Welche Möglichkeit genutzt wird,dürfte wohl klar sein.
Erst wenn er wissen will, was macht diese Funktion, wird dann erklärt was vorgeht. Nur benutzen wird er die Funktion trotzdem.
Nicht anders ist es auch bei Subs;Makros,UDF. Nur das hier die Nachfragen natürlich häufiger sind.
Dann muß ich noch einiges klarstellen.
1.Meine Methode hat keinerlei Einschränkung,sie kann ab Excel2007 für alle Versionen verwendet werden.
2.Eine UDF kann nicht für alle Typen der Bedfor gelten
3.Ein Anfänger ist auf fertige Lösungen zum Auswerten der Bedfor angewiesen.
Zu 1
Meine Methode ermittelt die aktive Bedfor und dies geht mit allen vorhandenen Typen der Bedfor. Erst danach wird aus der Bedfor die gewünschte Information ausgelesen,wenn sie denn zur Verfügung steht.
Zu 2.
Eine Udf für alle Typen kann es nicht geben. Eine UDF gibt immer nur einen genau definierten Wert zurück.Es ist aber möglich das zwei verschiedene Bedfor's aktiv sind. (zB. ein Datenbalken und eine Zellformatierung auf Maxwert). Außerdem gibt es Typen, die überhaupt keine Farbangabe zurückgeben weil diese hartkodiert sind. Um jetzt Datenbalken,Farbscalen,Symbole aus zu werten,ist schon einiger Aufwand nötig,der aber bei der Zellformatierung durch Bedfor vollkommen unnötig ist.
Zu 3.
Die Bedfor ist ein gewaltiges Instrument und ohne sich damit intensiv zu beschäftigen, wird es nicht möglich sein, diese zu begreifen.
Ein Anfänger wäre hier total überfordert,er kann nur auf bekannte Lösungen zurückgreifen.
Gruß Ewald

Dem allgemeinen Teil pflichte ich mal bei, ...
20.10.2014 04:49:56
Luc:-?
…Ewald,
denn ich habe auch mal gelernt, dass ein Fragesteller oftmals sein eigentliches Problem mit den Problemen vertauscht, die auf seinem speziellen Lösungsweg auftauchen (und nach denen hier dann auch oft nur gefragt wird), die er aber nicht hätte, wenn er sein eigentliches Problem rational angehen würde.
Was Daniel betrifft, ist das wohl ein ganz spezieller Fall. Das es auch anders geht, zeigen hier ja auch etliche Dialoge und Diskussionen.
Zum DiskussionsThema:
1. Meine Bemerkung bezog sich nicht auf XlVersionen ab Xl12, sondern auf die von dir selbst formulierten Einschränkungen. Allerdings erfordert deine Methode Vorbereitung in der BedFmtierung selbst.
2. Da irrst du, denn man kann eine UDF variabel pgmieren und dann entsprd argumentieren. Und eine UDF kann auch ganze DatenFelder mit allen möglichen Angaben zurückgeben. Das können ja auch viele XlStandardFktt. Mein ArchivLink weiter oben zeigt eine HTML-Tabelle, deren zT bedingte Formate mit UDFs ausgelesen wurden. Und dass ich sogar skalierte Farben mit meinen UDFs hinreichend genau auslesen kann, hatte ich dir ja bereits seinerzeit im OL-xlFormate-TeilForum bewiesen… ;-)
3. Volle Zustimmung, denn das gehört quasi zur „Königsklasse“ von Xl/VBA. Den Meisten sind ja idR nicht mal die Grundlagen klar.
So, na dann an dieser Stelle nochmals die 2 Prinzip-UDFs, mit denen man eine BedingtFormatRegel in FmlForm (hier nur für MenüPkt6-Regeln, früher das lokale HptProblem!) fast evaluierungsreif auslesen kann (vor Xl12 müssen relative Adressen mit der StandortZelle der UDF abgeglichen wdn, weil sie an diese angepasst wdn, ab Xl12 ist das nicht mehr erforderlich, dafür müssen alle RelativAdressen der zugehörigen FolgeZellen separat angepasst wdn):
Function GetFCFormula(Bezug As Range, ByVal RegelNr As Long)
GetFCFormula = Bezug.FormatConditions(RegelNr).Formula1
End Function
Function LetFormula(ByVal FmlText As String)
LetFormula = Evaluate(FmlText)
End Function
Wie das fktt (mit dem Einsatz von 1× die eine und 2× die andere UDF, kann man eine FmlRegel der 1.Zelle schon auswerten) möge sich jeder Interessent selber überlegen…! ;-)
Man kann aber auch die XLM-Fkt AUSWERTEN benutzen, um eine dt BedFmtFormel auszuwerten. Das ist aber aufwendiger und erfordert idR Hilfszellen.
Gruß, Luc :-?

AW: Dem allgemeinen Teil pflichte ich mal bei, ...
20.10.2014 19:37:00
Ewald
Hallo Luc,
Zu 1
das ist nur im ersten Makro so, wo ich die Methode aufzeigen wollte, Im zweiten Makro ist eine Vorbereitung der Bedfor nicht mehr nötig.
Zu 2
Mir ist schon klar das man alles mit einer UDF erledigen kann, nur ist das meiner Ansicht nicht wirlich zielführend. Um alles auszulesen mit den verschiedenen Typen wäre das schon eine gewaltige UDF.
Was ich meine ist kleine UDF's für den jeweiligen Zweck.
Wenn ich nur die aktiveBedfor haben will, brauch ich mich um die Farben nicht zu kümmern.
Wenn ich nur die Zellfarbe haben will,ist mir die Schriftfarbe und die Farben der speziellen Bedfortypen egal. usw.
Dies ergibt dann relativ schlanke UDF's.
Gruß Ewald

Meine diesbzgl UDFs kann man nicht wirklich ...
20.10.2014 21:50:20
Luc:-?
…schlank nennen, Ewald,
auch, wenn da mehrere ineinandergreifen. Das mit den schlanken UDFs ist ja auch nur dem Profi-(VBA-)Pgmierer­Denken geschuldet, die so etwas unter Pgmier­Werkzeuge verbuchen. Bei einer in ZellFmln einsetzbaren UDF handelt es sich idR aber um ein selbständiges, mehr oder weniger komplexes Pgm, weshalb wohl auch andere Pgmier­Sprachen kaum einen bis gar keinen Unter­schied zwischen beiden Proze­dur­Typen machen. Wenn du dir den rele­vanten Quell­Code in meinem verlinkten HTML-Bsp ansiehst, kannst du das ebenfalls feststellen.
Ich für meinen Teil fühle mich an derartige FktsVorstel­lungen, derent­wegen man wohl auch so viele, aus meiner Sicht lächerlich kurze, nur für einen einzigen Zweck(­aus­schnitt) und eine starr fixierte Argument­Form ausgelegte UDFs findet, nicht gebunden (die Xl-Pgmierer sicher auch nicht, sonst gäbe es wohl keine universell agierenden Xl-Fktt!). Eine meiner aller­ersten ist auch heute noch, nach >10 Jahren, die längste (musste ich damals deshalb mehrfach teilen!); Längen von mehreren 100 Zeilen sind dabei auch heute noch keine Ausnahme, aber es kommen natürlich auch recht kurze vor, das hängt ganz allein von der Komplexität ihrer Aufgaben ab (deshalb hatte ich im Inhalts­Verzeichnis der Hilfe zu einem diesbzgl AddIn auch die Zeilen­Anzahl angegeben).
Das kurze Bsp, das ich oben gezeigt habe, zeigt auch nur ein Lösungs­Prinzip. Die von mir hierbei verwendeten UDFs sind natürlich wesentlich komplexer (und länger!).
Was du zur Weiter­entwicklung deiner Methode schreibst, ist sehr inter­essant. Ich dachte ja bisher, ich wüsste, wie sie fktioniert. Dann muss ich mir das also doch noch genauer ansehen… ;-)
Z.Z. bin ich allerdings mal wieder oder besser noch mit der ThemeColor-Thematik beschäftigt und musste dabei feststellen, dass die Verhältnis­Funktion von T&S und RGB-Einzel­Farb­werten, zumindest von Text1&2 keine lineare Form hat (R&B bilden eine Kurve!). Deshalb wird die Berechnung von T&S wohl eher komplexerer Natur und nicht so einfach sein, wie es scheint (wird auch das A und Ω für alles weitere sein). Das würde den Einfluss (und die Entstehung) der vielen Dezimalen auch besser erklären…
Aber ich glaube ja, wir wdn hier wohl die Einzigen bleiben, die (ernsthaft) über so etwas diskutieren… ;-)
Gruß, Luc :-?

AW: Meine diesbzgl UDFs kann man nicht wirklich ...
21.10.2014 00:56:06
Ewald
hallo Luc,
Darüber läßt sich vortrefflich streiten,
nur sehe ich keinen Grund warum ich einer Funktion welche die Grundrechenarten beherschen soll auch noch die Möglichkeit mitgeben soll, große Zahlen zu potenzieren.
Nur das kann ja jeder für sich entscheiden.
Das die Beteiligung gerade bei diesen Themen sehr gering ist, läßt sich ja auch nachvollziehen. Ich war ja an allen Versuchen um die aktive Bedingung auszulesen beteiligt. Formellösung,Pixellösung und auch die jetzt von mir gefundene Lösung. Da sind schon einige Stunden zusammengekommen und es waren auch nur einige wenige die sich daran beteiligt haben.
Die weitverbreitete Meinung das geht nicht, herrscht ja auch heute noch vor.
Das Schreiben von UDF's zu diesem Thema macht ja im Moment auch wenig Sinn. Hier verschwinden sie in den Tiefen des Archivs und bei OL ist es im Moment auch nicht besser.
Gruß Ewald

Jaja, so ist es leider, ...
21.10.2014 04:15:47
Luc:-?
…Ewald,
denn wer schaut schon ins Archiv! Aber dieses hier wird ja auch auf CD gepresst, und wer die kauft, wird schon reinsehen! Möglicherweise schauen ja ohnehin mehr Leute ins Archiv als letztlich im Forum fragen. Dort, wo Klicks gezählt wdn, merkt man das dann ja auch.
Übrigens, meine UDFs befassen sich natürlich nicht mit Grundrechenarten, auch nicht im von dir gemeinten übertragenen Sinne… ;-)
Will hier aber schnell noch mal die Gelegenheit nutzen und dir etwas zeigen, was wohl erklärt, warum es so schwer ist, von einer akzentuierten ThemeColor auf die jeweilige Grundfarbe zurück zu rechnen (ich hatte da was durcheinander gebracht — Text1 ist natürlich ebenso wie HG1 linear, aber alle anderen eben nicht):
Userbild
Gruß, Luc :-?

AW: Jaja, so ist es leider, ...
22.10.2014 01:24:29
Ewald
Hallo Luc,
wie ich das so sehe, könnte das passen,
hier mal Akz2 mit Tas 1 bis -1
Userbild
Gruß Ewald

Naja, ist nur andersrum, ...
22.10.2014 05:16:21
Luc:-?
…Ewald,
aber linear sind die Verläufe deshalb auch nicht. Bei meiner Darstellung von Larissa-Akzent2 ist Grün mit Blau nahezu identisch, was auch der Datenlage entspricht.
Gruß, Luc :-?

AW: Naja, ist nur andersrum, ...
23.10.2014 01:05:41
Ewald
Hallo Luc,
wollte ja nur zeigen das es auch im gesamten Bereich von 1 bis -1 nicht linear ist.
Dies zeigen ja die Daten viel besser als die Diagramme.
Sie zeigen ja auch, das je nach Ausgangswert die Verläufe anders sind (deine Dia-beispiele)
Außerdem wird ja je nach Farbkomponente anders gerechnet.
Farbe 255,255,255
eingebene TAS 0,9
ausgelesene TAS 0,899990844447157
Farbe dann 237,242,248
eine andere Frage wäre ob das vielleicht auf Hexebene passiert
nur weiß ich nicht wie das geht, ergibt
FF/64*5A = ED
Gruß Ewald

Ich hatte mal lineare Trends draufgesetzt, ...
23.10.2014 02:32:14
Luc:-?
…Ewald,
aber das war eigentlich sinnlos, da sie ja mit Ausnahme von Grau nicht-linear sind. Auf jeden Fall ist es aber möglich, mit bekannter Anstiegs- oder Verschiebungs­Konstante aus T&S den exakten Farbwert zu berechnen, nur nutzt das ja leider wenig. Das A und Ω scheint also der Bildungs­algorithmus von T&S zu sein, worauf ja auch deine Bemerkung über die (interne) Wandlung einfacher %Angaben in komplizierte Dezimal­Zahlen hindeutet. Leider habe ich dazu bisher nichts Brauchbares im Web gefunden (und ich dachte schon, du hättest ihn! ;-]) und auch die HSL-Lightness scheint da nicht weiter­zu­helfen. Möglicherweise wird da noch Gamma bemüht oder wasweißich (so etwas liegt ja wohl auch Bild­Bearbeitungs­Pgmm zugrunde)…
Morrn, Luc :-?

Inzwischen scheint sich abzuzeichnen, ...
23.10.2014 17:43:28
Luc:-?
…dass auf (runde) T&S nur ein (ziemlich verrückter) KorrekturFaktor aufgesetzt wird, Ewald,
aber warum? Hat das evtl (auch) mit Gamma-Korrektur zu tun…?
Luc :-?

AW: Dieses Ziel wirst du wohl nie 100%ig erreichen ...
20.10.2014 01:36:43
Daniel
wer nicht die Zeit und die Geduld aufbringen will, seine Probleme selber zu lösen, der muss dann eben das Geld aufbringen, um eine Person anzustellen, die es kann.
Für sowas reicht mir dann Ego-Befriedigung nicht mehr aus, da müsste dann schon Cash fließen.
Fragen beantworte ich gerne, aber fertige Lösunge gibts nicht für lau.
Deswegen habe ich auch gar kein Interesse daran, hier irgendwelche Lösungen zu erstellen, die der Anwender verwenden kann, ohne sie zu verstehen.

Dem letzten Pkt stimme ich weitgehend zu, ...
20.10.2014 04:57:18
Luc:-?
…weshalb ich auch nicht alles verrate (s.ob.!), Daniel,
obwohl ich das nicht ganz so eng sehe. Ich verfüge nämlich über ausreichend eigenes FertigMaterial, das in vielen Fällen auch die Engagierung eines Problemlösers erübrigen könnte… ;-]
Morrn, Luc :-?

AW: Farbnummer auslesen
19.10.2014 08:50:15
Peter
Hallo
Vielen Dank für all die Beiträge. Da kann ich einiges lernen.
Schöner Sonntag.
Gruss, Peter

Na, dann iss ja jut...! SchöWo! owT
20.10.2014 09:52:26
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige