Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Access setzt Schriftfarbe automatisch auf rot





Frage

Werte Fachwissende, die folgende Funktion dient der Einfärbung von innerhalb der Prozedur errechneten Prozentwerten je nachdem ob sie positve oder negativ sind. If Res < 0 Then Me.DPV_Comp_2004.ForeColor = RGB(250, 0, 0) Me.DPV_Comp_2004 = Res & "%" Else If Res = "0" Then Me.DPV_Comp_2004.ForeColor = RGB(0, 0, 170) Me.DPV_Comp_2004 = Res & "%" Else Me.DPV_Comp_2004.ForeColor = RGB(0, 170, 0) Me.DPV_Comp_2004 = "+" & Res & "%" End If End If End If Das Problem ist nun sobald ich der Prozentzahl durch ein künstliches "+" & den Positivcharakter der Zahl nocheinmal unterstützen möchte, ändert Access die Textfarbe automatisch in rot um. Lässt man den Präfix "+" & weg oder ersetzt ihn durch einen Zahlen- oder Buchstabenkette funktioniert die Funktion einwandfrei. Die merkwürdige Roteinfärbung tritt nur bei Zeichen wie +,-,*,# usw auf ... Die Prozentzahl soll sofern sie positiv ist grün und als +39% erscheinen. Sollte der Prozentwert negativ sein wird er rot gefärbt und bereits automatisch mit negativem Vorzeichen als -39% ausgegeben. Der Wert wird blau gefärbt und als 0% dargestellt. Fazit: Die Große Frage ist warum wird der positive Wert wenn ihm ein Zeichen vorangestellt wird plötzlich rot und nicht grün. Ich hoffe einer von euch kann mir hier weiterhelfen. Liebe Grüße, Alex

Antwort 1 von Proggi

du solltest nicht mit > oder < einen String vergleichen, der Effekt kann wie beschrieben nach hinten los gehen.

im normalfall würdest du das mit dem "+" weglassen da das überbetont.

vergleiche einen String und benutze Select Case - deine If-abfrage ist unübersichtlich.

Select Case Left(Res, 1)
Case "-"
  Me.DPV_Comp_2004.ForeColor = RGB(250, 0, 0)
  Me.DPV_Comp_2004 = Res & "%"
Case "0"
  Me.DPV_Comp_2004.ForeColor = RGB(0, 0, 170)
  Me.DPV_Comp_2004 = Res & "%"
Case Else
  Me.DPV_Comp_2004.ForeColor = RGB(0, 170, 0)
  Me.DPV_Comp_2004 = "+" & Res & "%"
End Select


Antwort 2 von Mondoban

Vielen Dank Proggi für die rasche Antwort und die Verbesserung meiner If-Abfrage ...

Jedoch gibt mir Access im Case Else immernoch den +39% - Wert in Rot und nicht in grün aus. Sobald ich das Pluszeichen mit "+" & davor setzt färbt sich der Werte im Textfeld automatisch rot ungeachtet der erzwungenen Textfarbe in der Funktion.

Also dass mach irgendwie keinen Sinn finde ich ... Zunächst werde ich die positiven einfach nur grün anzeigen lassen ohne Pluszeichen. Es würde mich aber trotzdem interessieren warum Access jeden Wert rot färbt wenn man künstlich eine Zeichen davor setzt.

Bitte klärt dieses Mysterium auf.

Thx,
Alex

Antwort 3 von Proggi

Mal frage - ist das ein Endlosformular?

Antwort 4 von Teddy7

Hat proggi doch gesagt.
Durch die Zusammenstellung "+" & Res & "%"
ist das Feld keine Zahl mehr sondern ein Text - und der wird halt bei < Abfrage hexadecimal aufgedröselt. D.h. wahrscheinlich ist der hexadecimale Wert von + kleiner als der von 0.
Lösung: mach 2 Felder. Die Zahl kannst Du unsichtbar stellen und ein Textfeld füllst und formatierst Du abhängig vom Zahlenfeld.

Gruß
Teddy

Antwort 5 von erik

Hallo Alex,

statt des VBA-Codes würde ich dir empfehlen, ein benutzerdefiniertes Format in die Format-Eigenschaft des betroffenen Formularfeldes einzufügen:

+0%[Grün];-0%[Rot];0%[Blau];[Schwarz]


Nachdem was ich gelesen habe, müsste dieses Format in jeder Hinsicht genau das machen, was du brauchst.

Wie das im Detail funktioniert, verrät die Online-Hilfe. Drücke nach Klick in die Format-Eigenschaft die F1-Taste und scrolle runter zu "Benutzerdefinierte Formate"

Viele Grüße
erik

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: