PDA

Vollständige Version anzeigen : Symbolsatz; Anzeige abhängig von einer einzigen Zelle


GibsonSG
20.07.2014, 07:06
Guten Morgen zusammen.

Ich möchte einen Symbolsatz (3 Pfeile) für mehrere Zellen erstellen. Die
Anzeige der Pfeile soll abhängig vom Wert einer einzigen Zelle sein.

Hier ein kleines Beispiel:

Zelle und dessen Wert
A1 = 2
A2 = 5
A3 = 9
A4 = 12
A5 = 15

Referenzzelle
X1 = 19

Die Anzeige der Pfeile soll prozentual abhängig von der Zelle X1(!) stattfinden.
D.h., wenn zum Beispiel der Wert von Zelle A4 >= 70% des Wertes von Zelle X1 beträgt, so soll ein grüner Pfeil angezeigt werden, bei 50% der waagerechte und darunter der nach unten zeigende Pfeil.
Wie kann ich dieses in VBA umsetzen?

Leider finde ich nichts passendes dazu.

Hätte jemand eine Idee dazu?

Crazy Tom
20.07.2014, 07:35
Hallo

das geht auch mit Formeln
<b>Tabelle1</b><br /><br /><table border="1" cellspacing="0" style="font-family:Arial,Arial; font-size:10pt; background-color:#ffffff; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:83.2px;" /><col style="width:83.2px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >A</td><td >B</td></tr><tr style="height:22px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >1</td><td style="text-align:right; ">2</td><td >m</td></tr><tr style="height:22px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >2</td><td style="text-align:right; ">5</td><td >m</td></tr><tr style="height:22px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td style="text-align:right; ">9</td><td >n</td></tr><tr style="height:22px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td style="text-align:right; ">12</td><td >k</td></tr><tr style="height:22px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >5</td><td style="text-align:right; ">15</td><td >k</td></tr></table><br /><table style="font-family:Arial; font-size:10pt; border-style: groove ;border-color:#00ff00;background-color:#fffcf9; color:#000000; "><tr><td ><b>Formeln der Tabelle</b></td></tr><tr><td ><table border = "1" cellspacing="0" cellpadding="2" style="font-family:Arial; font-size:9pt;"><tr style="background-color:#cacaca; font-size:10pt;"><td >Zelle</td><td >Formel</td></tr><tr><td >B1</td><td >=WENN(A1&lt;$X$1*0,5;"m";<span style=' color:008000; '>WENN(A1=$X$1*0,5;"n";"k")</span>)</td></tr><tr><td >B2</td><td >=WENN(A2&lt;$X$1*0,5;"m";<span style=' color:008000; '>WENN(A2=$X$1*0,5;"n";"k")</span>)</td></tr><tr><td >B3</td><td >=WENN(A3&lt;$X$1*0,5;"m";<span style=' color:008000; '>WENN(A3=$X$1*0,5;"n";"k")</span>)</td></tr><tr><td >B4</td><td >=WENN(A4&lt;$X$1*0,5;"m";<span style=' color:008000; '>WENN(A4=$X$1*0,5;"n";"k")</span>)</td></tr><tr><td >B5</td><td >=WENN(A5&lt;$X$1*0,5;"m";<span style=' color:008000; '>WENN(A5=$X$1*0,5;"n";"k")</span>)</td></tr></table></td></tr></table><br /><table style="font-family:Arial; font-size:10pt; background-color:#fffcf9; border-style: groove ;border-color:#ff0000"><tr><td ><b>Bedingte Formatierungen der Tabelle</b></td></tr><tr><td ><table border="1" cellspacing="0" style="font-family:Arial; font-size:10pt; "><tr><td >Zelle</td><td >Nr.: / Bedingung</td><td >Format</td></tr><tr><td >B1</td><td >1. / Zellwert ist gleich ="m"</td><td style="color:#ff0000; background-color:#000000; ">Abc</td></tr><tr><td >B1</td><td >2. / Zellwert ist gleich ="k"</td><td style="color:#00b050; background-color:#000000; ">Abc</td></tr><tr><td >B1</td><td >3. / Zellwert ist gleich ="n"</td><td style="color:#ffff00; background-color:#000000; ">Abc</td></tr><tr><td >B2</td><td >1. / Zellwert ist gleich ="m"</td><td style="color:#ff0000; background-color:#000000; ">Abc</td></tr><tr><td >B2</td><td >2. / Zellwert ist gleich ="k"</td><td style="color:#00b050; background-color:#000000; ">Abc</td></tr><tr><td >B2</td><td >3. / Zellwert ist gleich ="n"</td><td style="color:#ffff00; background-color:#000000; ">Abc</td></tr><tr><td >B3</td><td >1. / Zellwert ist gleich ="m"</td><td style="color:#ff0000; background-color:#000000; ">Abc</td></tr><tr><td >B3</td><td >2. / Zellwert ist gleich ="k"</td><td style="color:#00b050; background-color:#000000; ">Abc</td></tr><tr><td >B3</td><td >3. / Zellwert ist gleich ="n"</td><td style="color:#ffff00; background-color:#000000; ">Abc</td></tr><tr><td >B4</td><td >1. / Zellwert ist gleich ="m"</td><td style="color:#ff0000; background-color:#000000; ">Abc</td></tr><tr><td >B4</td><td >2. / Zellwert ist gleich ="k"</td><td style="color:#00b050; background-color:#000000; ">Abc</td></tr><tr><td >B4</td><td >3. / Zellwert ist gleich ="n"</td><td style="color:#ffff00; background-color:#000000; ">Abc</td></tr><tr><td >B5</td><td >1. / Zellwert ist gleich ="m"</td><td style="color:#ff0000; background-color:#000000; ">Abc</td></tr><tr><td >B5</td><td >2. / Zellwert ist gleich ="k"</td><td style="color:#00b050; background-color:#000000; ">Abc</td></tr><tr><td >B5</td><td >3. / Zellwert ist gleich ="n"</td><td style="color:#ffff00; background-color:#000000; ">Abc</td></tr></table></td></tr></table> <br /><br /><span style="font-family:Arial; font-size:9pt; font-weight:bold;background-color:#ffffff; color:#000000; ">Excel Tabellen im Web darstellen &gt;&gt; </span><a style ="font-family:Arial; font-size:9pt; color:#fcf507; background-color:#800040; font-weight:bold;" href="http://www.excel-jeanie-html.de" target="_blank"> Excel Jeanie HTML 4.8 </a>
dann nur noch die Spalte B mit Schriftart Wingdings3 formatieren

MfG Tom

RPP63neu
20.07.2014, 07:39
Hallo!
(da er ja den Symbolsatz haben wollte)
Dies:

http://abload.de/img/zwischenablage01m3jzk.jpg (http://abload.de/image.php?img=zwischenablage01m3jzk.jpg)

ergibt das:

http://abload.de/img/screenshot_13lkfh.jpg (http://abload.de/image.php?img=screenshot_13lkfh.jpg)

Gruß, Ralf

GibsonSG
20.07.2014, 18:49
Danke für Eure Hilfe. Eigentlich ganz einfach!

Gruß

GibsonSG
20.07.2014, 20:03
Ähm, was ich übersah....


Wie bekomme ich das mit VBA hin :eek: ?

Mc Santa
20.07.2014, 20:21
Hallo,

hilft dir der Makrorekorder nicht weiter?
Zeichne den Vorgang, so wie du ihn manuell machst, mit dem Makrorekorder auf und passe ihn anschließend an die Tabelle an. Wenn du dabei Probleme hast, kannst du hier noch einmal nachfragen :)

VG

GibsonSG
20.07.2014, 20:43
Genau das habe ich gemacht. Er zeichnet nicht die Aktion auf :boah:

GibsonSG
20.07.2014, 21:14
Jetzt weiß ich, warum der Makrorecorder nichts aufgezeichnet hat. Nachdem man eine Regel erstellt hat, darf man nicht den Button "Übernehmen" anklicken, sondern stattdessen muss man den Button "OK" betätigen. Scheint wohl ein Bug zu sein. Zumindestens verhält es sich hier bei mir so (Excel 2013)

Mc Santa
20.07.2014, 21:18
Hallo,

das ist merkwürdig, hier mal mein aufgezeichneter Code:
Sub Makro4()
'
' Makro4 Makro
'

'
Range("A1:A5").Select
Selection.FormatConditions.AddIconSetCondition
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1)
.ReverseOrder = False
.ShowIconOnly = False
.IconSet = ActiveWorkbook.IconSets(xl3Arrows)
End With
With Selection.FormatConditions(1).IconCriteria(2)
.Type = xlConditionValueFormula
.Value = "=Tabelle2!$C$1*0,5"
.Operator = 7
End With
With Selection.FormatConditions(1).IconCriteria(3)
.Type = xlConditionValueFormula
.Value = "=Tabelle2!$C$1*0,7"
.Operator = 7
End With
End Sub

Hilft dir das weiter?
Viele Grüße

GibsonSG
20.07.2014, 21:32
Ja, Danke!

wie ein Posting darüber von mir beschrieben darf ich den Button "Übernehmen" nicht anklicken. Habe ich auch nur zufällig entdeckt.

GibsonSG
21.07.2014, 07:36
Mir ist noch was aufgefallen, was ich dem einen oder anderen Suchenden nicht vorenthalten möchte.

Ich habe gerade hier das Excel Sheet mit Excel 2007 laufen lassen (erstellt habe ich es mit Excel 2013!).

Bei der Zuweisung der Eigenschaft Value erhalte ich die Fehlermeldung:

Beispielcode:
With Selection.FormatConditions(1).IconCriteria(2)
.Type = xlConditionValueFormula
.Value = "=meinExcelSheet!$C$1*0,5"
.Operator = 7
End With

Laufzeitfehler 1004
Anwendungs- oder objektdefinierter Fehler

Der Grund liegt in der Namensangabe des Excelsheets ("=meinExcelSheet!), sofern das Makro im gleichen Sheet wie in dem angegebenen läuft.

Durch Änderung von

.Value = "=meinExcelSheet!$C$1*0,5"
zu
.Value = "=$C$1*0,5"

wird das Problem beseitigt. Unter Excel 2013 verursacht die Namensangabe des Excelsheets an sich keine Probleme. Somit funktioniert das Ganze dann auch in Excel 2007