Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Werkzeug
BildScreenshot zu Werkzeug Werkzeug-Seite mit Beispielarbeitsmappe aufrufen

Farbnummer auslesen

Betrifft: Farbnummer auslesen von: Peter
Geschrieben am: 17.10.2014 16:31:39

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

  

Betrifft: AW: Farbnummer auslesen von: Hajo_Zi
Geschrieben am: 17.10.2014 16:36:33

Hallo Peter,

ich hätte nur 2 Zeilen benutzt.
ActiveCell.Interior.Color
ActiveCell.Font.Color

GrußformelHomepage


  

Betrifft: AW: Farbnummer auslesen von: Peter
Geschrieben am: 17.10.2014 16:41:26

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


  

Betrifft: AW: Farbnummer auslesen von: Hajo_Zi
Geschrieben am: 17.10.2014 16:44:30

Hallo Peter,

im ersten Beitrag war VBA.

Tabelle1

 ABCDEF
13 Schriftfarbe, Füllfarbe anzeigen  
14 4653Schriftfarbe  
15  4Füllfarbe  
16      
17      
18 Summe für Inhalt und Farbe  
19 x20  
20 x341  
21 x60  
22  3Summe für: Spalte B = x; Spalte C = Farbe 41

 verbundene Zellen 
B13: D13
B18: D18
D22:F22

verwendete Formeln
Zelle Formel Bereich N/A
C14=Schrift  
C15,D19: D21=Hintergrund  
C22=SUMMENPRODUKT((B19:B21="x")*(D19: D21=41)*(C19:C21))  

definierte Namen  
Name Bezieht sich auf Tabelle Z1S1-Formel
Hintergrund=ZELLE.ZUORDNEN(63;INDIREKT("ZS(-1)";FALSCH))+(0*JETZT()) =GET.CELL(63,INDIRECT("ZS(-1)",FALSE))+(0*NOW())
Schrift=ZELLE.ZUORDNEN(24;INDIREKT("ZS(-1)";FALSCH))+(0*JETZT()) =GET.CELL(24,INDIRECT("ZS(-1)",FALSE))+(0*NOW())
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 18.18 einschl. 64 Bit



Gruß Hajo


  

Betrifft: AW: Farbnummer auslesen von: Daniel
Geschrieben am: 17.10.2014 16:44:48

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


  

Betrifft: Hinweis: Durch Drücken von F9 kann man ... von: Luc:-?
Geschrieben am: 17.10.2014 17:53:55

…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 :-?


  

Betrifft: AW: Hinweis: Durch Drücken von F9 kann man ... von: Ewald
Geschrieben am: 17.10.2014 19:32:36

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


  

Betrifft: AW: Farbe der bedingten Formatierung von: daniel
Geschrieben am: 17.10.2014 20:52:09

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


  

Betrifft: Das wundert mich nun doch, ... von: Luc:-?
Geschrieben am: 18.10.2014 00:01:49

…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 :-?


  

Betrifft: AW: Das wundert mich nun doch, ... von: Daniel
Geschrieben am: 18.10.2014 00:36:20

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.


  

Betrifft: Ich schrieb ja, was Ewald vermutlich meint, ... von: Luc:-?
Geschrieben am: 18.10.2014 04:18:50

…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 :-?


  

Betrifft: AW: und ich wollte von Ewald wissen ... von: Daniel
Geschrieben am: 18.10.2014 11:21:38

was er tatsächlich meint.


  

Betrifft: ...Was dir im Sinne deines Verständnisses von ... von: Luc:-?
Geschrieben am: 18.10.2014 12:14:40

sehr einfach nicht weiterhelfen würde…! :->
Luc :-?


  

Betrifft: AW: ...Was dir im Sinne deines Verständnisses von ... von: Daniel
Geschrieben am: 18.10.2014 12:39:45

vielleicht können wir uns darauf einigen, das "sehr einfach" im Sinne des Fragestellers mit Basiskenntnisse VBA, (so wie angegeben) zu verstehen?


  

Betrifft: Können wir zwar, aber das war ja ohnehin ... von: Luc:-?
Geschrieben am: 18.10.2014 14:52:03

…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 :-?


  

Betrifft: AW: Können wir zwar, aber das war ja ohnehin ... von: Daniel
Geschrieben am: 18.10.2014 15:08:20

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.


  

Betrifft: Können vs Wollen; woraus willst du das ... von: Luc:-?
Geschrieben am: 18.10.2014 15:42:12

…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 :-?


  

Betrifft: AW: Können vs Wollen; woraus willst du das ... von: Daniel
Geschrieben am: 18.10.2014 15:58:00

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.


  

Betrifft: Genau für diese Klientel schreibe ich ja auch ... von: Luc:-?
Geschrieben am: 18.10.2014 18:10:45

…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 :-?


  

Betrifft: AW: Genau für diese Klientel schreibe ich ja auch ... von: Ewald
Geschrieben am: 18.10.2014 18:33:00

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


  

Betrifft: AW:Einfachheit die zweite von: Ewald
Geschrieben am: 19.10.2014 00:37:52

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.


  

Betrifft: Na, ich glaube ja, ... von: Luc:-?
Geschrieben am: 19.10.2014 14:22:50

…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 :-?


  

Betrifft: AW: Tatsächlich nicht besonders kompliziert von: Daniel
Geschrieben am: 20.10.2014 01:26:59

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


  

Betrifft: und ich für die andere von: Daniel
Geschrieben am: 19.10.2014 13:41:58

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


  

Betrifft: Dieses Ziel wirst du wohl nie 100%ig erreichen ... von: Luc:-?
Geschrieben am: 19.10.2014 14:11:33

…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 :-?


  

Betrifft: Vielleicht wäre es so besser von: Ewald
Geschrieben am: 20.10.2014 00:06:43

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


  

Betrifft: Dem allgemeinen Teil pflichte ich mal bei, ... von: Luc:-?
Geschrieben am: 20.10.2014 04:49:56

…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 :-?


  

Betrifft: AW: Dem allgemeinen Teil pflichte ich mal bei, ... von: Ewald
Geschrieben am: 20.10.2014 19:37:00

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


  

Betrifft: Meine diesbzgl UDFs kann man nicht wirklich ... von: Luc:-?
Geschrieben am: 20.10.2014 21:50:20

…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 :-?


  

Betrifft: AW: Meine diesbzgl UDFs kann man nicht wirklich ... von: Ewald
Geschrieben am: 21.10.2014 00:56:06

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


  

Betrifft: Jaja, so ist es leider, ... von: Luc:-?
Geschrieben am: 21.10.2014 04:15:47

…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):

Gruß, Luc :-?


  

Betrifft: AW: Jaja, so ist es leider, ... von: Ewald
Geschrieben am: 22.10.2014 01:24:29

Hallo Luc,

wie ich das so sehe, könnte das passen,

hier mal Akz2 mit Tas 1 bis -1



Gruß Ewald


  

Betrifft: Naja, ist nur andersrum, ... von: Luc:-?
Geschrieben am: 22.10.2014 05:16:21

…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 :-?


  

Betrifft: AW: Naja, ist nur andersrum, ... von: Ewald
Geschrieben am: 23.10.2014 01:05:41

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


  

Betrifft: Ich hatte mal lineare Trends draufgesetzt, ... von: Luc:-?
Geschrieben am: 23.10.2014 02:32:14

…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 :-?


  

Betrifft: Inzwischen scheint sich abzuzeichnen, ... von: Luc:-?
Geschrieben am: 23.10.2014 17:43:28

…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 :-?


  

Betrifft: AW: Dieses Ziel wirst du wohl nie 100%ig erreichen ... von: Daniel
Geschrieben am: 20.10.2014 01:36:43

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.


  

Betrifft: Dem letzten Pkt stimme ich weitgehend zu, ... von: Luc:-?
Geschrieben am: 20.10.2014 04:57:18

…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 :-?


  

Betrifft: AW: Farbnummer auslesen von: Peter
Geschrieben am: 19.10.2014 08:50:15

Hallo
Vielen Dank für all die Beiträge. Da kann ich einiges lernen.
Schöner Sonntag.
Gruss, Peter


  

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

:-?


 

Beiträge aus den Excel-Beispielen zum Thema "Farbnummer auslesen"