PDA

Vollständige Version anzeigen : Negative Zahlen in Textfeld rot anzeigen, positive Zahlen grün anzeigen


jeepster
03.04.2012, 11:11
Hallo Community,

in Excel 2003 habe ich folgendes Problem:

Auf einem Tabellenblatts B stelle ich in unterschiedlichen Textfeldern die Zahleninhalte unterschiedlicher Zellen aus Tabellenblatt A dar. Nun möchte ich aber, dass Zahlen kleiner Null in den Textfeldern rot sowie Zahlen größer und gelich Null in den Textfeldern grün angezeigt werden.

Kann mir jemand helfen?

Mit Dank und Gruß
Hartmut

Beverly
03.04.2012, 12:04
Hi Hartmut,

was für Textfelder benutzt du? Wie sind die Textfelder mit den Zellen verknüpft? Werden die Zahlen von Hand in die Zellen eingetragen oder durch Formeln ermittelt? Vielelicht wäre eine kleine Beispieldatei nicht schlecht.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/" onclick="window.open(this.href);return false"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

jeepster
03.04.2012, 13:29
Hi Katrin,

ich habe mal ein Beispiel angehängt.

Dank' Dir für's reindenken!

Gruß
Hartmut

chris-kaiser
03.04.2012, 13:49
Hi

warum werden diese Textfelder genommen?

hier ein Bsp. mit verknüpfter Graphik

in Office 2003
Zelle kopieren -> mit gedrückter Umschalttaste Menü Bearbeiten -> als verknüpfte Graphik einfügen.

die Zellen habe ich mit einer bedingten Formatierung belegt
Zellwert kleiner 0 -> rot
Zellwert größer 0 -> Grün

oder mit normaler Formatierung (ohne bedingte Formatierung) wäre es ein benutzerdef. Format

[farbe10]#.##0;[Rot]-#.##0;Standard

jeepster
03.04.2012, 14:10
Hi Chris,

das klappt perfekt :) !

Diesen Lösungsweg kannte ich noch gar nicht, ich war gänzlich auf vba gepolt.

Dank & Gruß
Hartmut

Beverly
03.04.2012, 14:27
Hi Hartmut,

hier noch eine VBA-Lösung:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1:B6")) Is Nothing Then
If Range("B5") >= 0 Then
Worksheets("TabelleB").Shapes("Text Box 2").OLEFormat.Object.Font.ColorIndex = 4
Else
Worksheets("TabelleB").Shapes("Text Box 2").OLEFormat.Object.Font.ColorIndex = 3
End If
ElseIf Not Intersect(Target, Range("C1:C5")) Is Nothing Then
If Range("C5") >= 0 Then
Worksheets("TabelleB").Shapes("Text Box 3").OLEFormat.Object.Font.ColorIndex = 4
Else
Worksheets("TabelleB").Shapes("Text Box 3").OLEFormat.Object.Font.ColorIndex = 3
End If
End If
End Sub

Kopiere diesen Code ins Codemodul des Tabellenblattes "TabelleA". Sobald im Bereich B1:B5 oder C1:C5 eine Eingabe erfolgt, wird geprüft, ob die Summe positiv oder negativ ist. In Abhängigkeit davon wird dann die Schriftfarbe im Textfeld entsprechend formatiert.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/" onclick="window.open(this.href);return false"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

jeepster
03.04.2012, 15:14
Hallo Karin,

ich habe die Ranges noch etwas an die Tabelle im Tabellenblatt A angepasst (also "B1:B6" bzw. "C1:C6" sowie "B7" bzw. "C7") und es läuft super!

Danke Dir und schöne Grüße
Hartmut

jeepster
06.04.2012, 13:51
Hi Karin,

nun ist bei mir noch eine Ergänzungsfrage aufgetaucht:

Wie muss der VBA-Code aussehen, wenn die Zahlen in den Zellbereichen B1:B5 und C1:C5 des Tabellenblatts A gar nicht dort eingegeben werden, sondern über Formelbezüge vom Tabellenblatt B importiert werden (also dort eingegeben werden)? Alles andere bleibt gleich, d.h. die zu formatierenden Textfelder befinden sich nach wie vor auch auf dem Tabellenblatt B.

Hoffentlich ist´s nun nicht zu verwirrend;)

Vielen Dank und österliche Grüsse
Hartmut

Beverly
06.04.2012, 15:43
Hi Hartmut,

in diesem Fall musst du den Code in das Tabellenblatt verschieben, in welchem deine Eingaben erfolgen und außerdem die Zelladressen anpassen, falls es andere sind.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/" onclick="window.open(this.href);return false"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

jeepster
07.04.2012, 15:17
Hallo Karin,

leider klappt das nur für das erste im VBA-Code angesprochene Textfeld, für die anderen unter "Else If" aufgeführten Textfelder nicht. Ich habe das Beispiel deshalb nochmal etwas umgebastelt. Die Eingaben erfolgen ausschließlich in Tabelle2 in den Spalten A (Datum) und B (Zahl). Vielleicht kannst Du mir nochmal Hilfestellung geben, was ich da in den Code schreiben muss, damit die Zahlen in den Textfeldern in Tabellenblatt2 entsprechend grün oder rot reagieren.

Vielen Dank und schöne Ostern
Hartmut

Hajo_Zi
07.04.2012, 15:32
Hallo Hartmut,

ich bin nun nicht Karin aber.
Der Dateiname sollte was mit dem Problem zu tun haben. Ich habe mir z.B. einen Ordner angelegt in dem ich alle Dateien aus dem Internet speichere. Bei Dateinamen wie Test., Mappe.., Beispiel wird eine vorhandene überschrieben.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm" onclick="window.open(this.href);return false"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

Beverly
07.04.2012, 16:15
Hi Hartmut,

im Prinzip stimme ich Hajo zu - ein Dateiname sollte schon etwas mit dem Problem zu tun haben. Ich habe mir dennoch deine Arbeitsmappe herunterzuladen (weil heute Ostern ist ;) ). Der Code müsste so aussehen:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("b2:b100")) Is Nothing Then
If Worksheets("Tabelle1").Range("a2") >= 0 Then
Worksheets("Tabelle2").Shapes("Text Box 1").OLEFormat.Object.Font.ColorIndex = 4
Else
Worksheets("Tabelle2").Shapes("Text Box 1").OLEFormat.Object.Font.ColorIndex = 3
End If
If Worksheets("Tabelle1").Range("b2") >= 0 Then
Worksheets("Tabelle2").Shapes("Text Box 2").OLEFormat.Object.Font.ColorIndex = 4
Else
Worksheets("Tabelle2").Shapes("Text Box 2").OLEFormat.Object.Font.ColorIndex = 3
End If
End If
End Sub

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/" onclick="window.open(this.href);return false"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

jeepster
07.04.2012, 20:25
Hallo Hajo,

ich bin erst seit kurzem im Forum und mit den Gepflogenheiten noch nicht so vertraut:(. Danke Dir für den Hinweis. Ich gelobe Besserung!

Gruß
Hartmut

jeepster
07.04.2012, 20:32
Hallo Karin,

danke für die Nachsicht ;) . Da ich erst seit kurzem im Forum bin, sind mir die Gepflogenheiten noch nicht so vertraut. Macht natürlich Sinn mit dem Dateinamen, - hätte ich ja auch mal selber drauf kommen können :).

Der Code klappt prima! Vielen Dank und schöne Ostern!

Gruß
Hartmut