Formatierung einer Zelle mittels Funktion

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Formatierung einer Zelle mittels Funktion
von: Chris
Geschrieben am: 29.09.2015 20:18:57

Hallo,
ich habe folgende Funktion geschrieben, welche auch gut funktioniert:

Function Note(Punkte As Integer) As String
    Select Case Punkte
        Case Is >= 90
            Note = "sehr gut"
        Case 75 To 89
            Note = "gut"
        Case 60 To 74
            Note = "befriedigend"
        Case 45 To 59
            Note = "ausreichend"
        Case 30 To 44
            Note = "mangelhaft"
        Case Else
            Note = "ungenügend"
    End Select
End Function
Wie kann ich nun die jeweilige Zelle, in der die Funktion aufgerufen wird, innerhalb der Funktion formatieren ("sehr gut" grün hinterlegt, ..., "ungenügend" rot hinterlegt; keine bedingte Formatierung)?
https://www.herber.de/bbs/user/100487.jpg
Vielen Dank für die Antworten!

Bild

Betrifft: AW: Formatierung einer Zelle mittels Funktion
von: Daniel
Geschrieben am: 29.09.2015 20:42:15
Hi
es ist in Excel nicht vorgesehen, das Formeln in Zellen mehr beeinflussen können, als den Zellwert.
daher dürfen auch VBA-Funktionen nur dies tun, wenn sie in Excelzellen in Formeln verwendet werden.
(es wird zwar berichtet, dass es möglich ist, diese Einschränkung ausser Kraft zu setzen, aber das ist dann eher für Experten)
Excel hat für deine Aufgabenstellung die bedingte Formatierung vorgehehen, in den neueren Excelversionen ab 2007 können dann auch mehr als 3 unterschiedliche bedingte Formate pro Zelle verwendet werden, du kannst auch unterschiedliche Bediungen für unterschiedliche Formatierungen miteinander kombinieren (Farbe nach Note, Rahmen nach Fachgruppe)
wenn du trotzdem die Bedingte Formatierung nicht verwenden willst, müsstest du ein normales Makro schreiben, welches die Formatierung nach Wert vornimmt.
Gruß Daniel

Bild

Betrifft: AW: Formatierung einer Zelle mittels Funktion
von: Chris
Geschrieben am: 30.09.2015 12:40:59
Hi Daniel,
vielen Dank für Deine ausführliche Antwort!
Dann werde ich wohl doch die bedingte Formatierung beibehalten müssen. Nichtsdestotrotz interessiert mich sehr, wie denn die Einschränkung ausser Kraft gesetzt werden kann. Hast Du dazu Informationen?
Danke & Gruß,
Chris

Bild

Betrifft: ZellFormatierung durch 1 UDF ist möglich, ...
von: Luc:-?
Geschrieben am: 30.09.2015 23:57:21
…Chris,
wenn man entweder API-Fktt in sie einbaut oder die UDF als Auslöser einer von ihr physisch entkoppelten Ereignis­Prozedur benutzt. D.h., die Formatierung wird in eine Ereignis- oder von einer solchen aufgerufene Prozedur ausgelagert. Die eigentliche UDF ruft diese Prozedur nicht auf, sondern macht etwas, das genau dieses Ereignis auslöst. Dabei kann das gewünschte Format der UDF als Argument mitgegeben wdn. Diese trägt es in eine Global­Variable ein (ggf mit eigenem Standort), auf die dann die Ereignisprozedur zugreift und so die Zelle(n) wie gewünscht formatieren kann.
So etwas sollte man nicht inflationär verwenden, schon gar nicht, wenn man das Problem auch mit einer Bedingt­Formatierung lösen kann. Es hat nämlich einen Grund, dass das Fktt in ZellFmln nicht erlaubt ist.
Übrigens lassen sich ab Xl12/2007 bzw xl14/2010 einige Dinge (idR neue Features) auch ohne diesen Umweg direkt mit einer UDF realisieren, während zuvor nur 'ne MsgBox ausgegeben wdn konnte (aber keine gute Idee!) und noch etwas in bezug auf Zeichnungs­Objekte, aber nur objekt­abhängig wenig (nie alles!) ging. Möglicherweise hat(te) MS da geschlampt.
Fazit: So etwas sollte stets einigen wenigen Spezialfällen vorbehalten bleiben!
Gruß, Luc :-?

Besser informiert mit …

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Formatierung einer Zelle mittels Funktion"