Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1584to1588
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellformat mit VBA inkl. Datenbalken

Zellformat mit VBA inkl. Datenbalken
04.10.2017 19:25:56
Christian
Hallo,
ich bin nach langer Abstinenz mal wieder mit VBA beschäftigt. Eins noch vorab, meine VBA Kenntnisse sind bescheiden :)
Zu meinem Problem:
Ich habe eine Zelle A10, in der insgesamt 3 Werte stehen sollen. Wert1 ist der aktuelle Ist-Wert, Wert2 ist der Maximale Wert und Wert3 ist das Verhältnis in %. Ist und Max wert sind mit "/" getrennt und der %-Wert steht in Klammern. Das ganze sieht dann ungefähr so aus:
321.264 / 321.264 (100%)
Alle Werte sind Variablen. Der Ist-Wert ändert sich ständig, der Max-Wert ändert sich nur bei einem neuen Szenario (Also auch eine Variable die für den aktuellen Fall aber konstant ist) und Wert3 ändert sich logischerweise mit dem Ist-Wert.
Die Zelle soll zudem das Verhältnis mit einem Datenbalken grafisch darstellen.
Hier ist mein Code für das Zellformat:
Wert3 = Round(Wert1 / Wert2 * 100, 0) 'Verhältnis
numFormat = "#,##"" / """ & Wert2 & " (" & Wert3 & "%)"
Worksheets(1).Cells(10, 1).NumberFormat = numFormat
Und hier der Datenbalken:
Worksheets(1).Cells(10, 1).FormatConditions.AddDatabar
Worksheets(1).Cells(10, 1).FormatConditions(Worksheets(1).Cells(10, 1).FormatConditions.Count).ShowValue = True
With Worksheets(1).Cells(10, 1).FormatConditions(1)
.MinPoint.Modify newtype:=xlConditionValueNumber, newvalue:=0
.MaxPoint.Modify newtype:=xlConditionValueNumber, newvalue:=Wert2
End With
With Worksheets(1).Cells(10, 1).FormatConditions(1).BarColor
.Color = 255
.TintAndShade = 0
End With
Worksheets(1).Cells(10, 1).FormatConditions(1).BarFillType = xlDataBarFillSolid
Worksheets(1).Cells(10, 1).FormatConditions(1).Direction = xlContext
Worksheets(1).Cells(10, 1).FormatConditions(1).NegativeBarFormat.ColorType = xlDataBarColor
Worksheets(1).Cells(10, 1).FormatConditions(1).BarBorder.Type = xlDataBarBorderNone
Worksheets(1).Cells(10, 1).FormatConditions(1).AxisPosition = xlDataBarAxisAutomatic
With Worksheets(1).Cells(10, 1).FormatConditions(1).AxisColor
.Color = 0
.TintAndShade = 0
End With
With Worksheets(1).Cells(10, 1).FormatConditions(1).NegativeBarFormat.Color
.Color = 255
.TintAndShade = 0
End With
Der Datenbalken an sich funktioniert, er stellt das Verhältnis je nach eingetragenem Wert1 auch richtig dar. Das Problem ist die Darstellung der Zahlen in der Zelle.
Bsp.: So soll es aussehen:
234.612 / 234.612 (100%)
So sieht es aus:
23.461.2 / 234612 (100%)
Enthält die erste Zahl hinten eine oder mehrere Nullen werden diese einfach weggelassen.
Bsp.: So soll es aussehen:
320.000 / 320.000 (100%)
So sieht es aus:
32. / 32000.0 (100%)
Ich komme da mit meinem Know-How einfach nicht weiter. Ich hoffe mein anliegen ist verständlich formuliert. Danke für die Aufmerksamkeit und eventuelle Lösungsvorschläge.
Gruß Christian

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Der Fehler liegt hier: #,##
05.10.2017 02:04:08
Luc:-?
Und zwar allein, Christian,
wie auch zu erwarten war, denn du weist numFormat dem .NumberFormat der Zelle zu, nicht dem .NumberFormatLocal. Das ist zwar idR besser, dann musst du aber auch eine US-Original-Formatierung benutzen, keine deutsch-lokale! Englisch ist Komma der TsderSeparator, was dann zu diesem seltsamen Ergebnis führt.
Morrn, Luc :-?
Besser informiert mit …
AW: Der Fehler liegt hier: #,##
05.10.2017 19:20:27
Christian
Hallo,
danke für den Tipp, leider hat es nicht funktioniert. Die Darstellung der Zahlen ist immer noch falsch. Das Problem ist nicht, dass Punkt und Komma verwechselt werden, sondern, dass der Tausenderpunkt scheinbar verrutscht und Nullen am Ende der Zahl verschwinden. In meinen Beispielen sieht man ja, dass dort dann z.b. 23.461.2 steht. Das bekomme ich leider nicht normal hin mit meiner Formatierung. Den Fehler erkenne ich allerdings nicht. Local hat wie gesagt leider auch nicht geholfen.
Anzeige
AW: Zellformat mit VBA inkl. Datenbalken
05.10.2017 19:19:44
Christian
Hallo,
danke für den Tipp, leider hat es nicht funktioniert. Die Darstellung der Zahlen ist immer noch falsch. Das Problem ist nicht, dass Punkt und Komma verwechselt werden, sondern, dass der Tausenderpunkt scheinbar verrutscht und Nullen am Ende der Zahl verschwinden. In meinen Beispielen sieht man ja, dass dort dann z.b. 23.461.2 steht. Das bekomme ich leider nicht normal hin mit meiner Formatierung. Den Fehler erkenne ich allerdings nicht. Local hat wie gesagt leider auch nicht geholfen.
AW: Zellformat mit VBA inkl. Datenbalken
05.10.2017 19:51:23
Daniel
HI
probiers mal so:
NumFormat = "#,##0"" / " & Format(Wert2, "#,##0") & " (" & Format(Wert3, "0") & "%)"""
wenn der Wert1 in der Zelle steht, müsste dieses Zahlenformat die anderen Daten entsprechend dazu anzeigen (Wert3 als mit 100 multiplizierte Verhältniszahl)
wenn wert3 als echte Verhältniszahl vorliegt, geht's natürlich auch.
Das "%" sitzt dann an einer anderen Stelle:
NumFormat = "#,##0"" / " & Format(Wert2, "#,##0") & " (" & Format(Wert3, "0%") & ")"""
Gruß Daniel
Anzeige
AW: Zellformat mit VBA inkl. Datenbalken
06.10.2017 19:13:53
Christian
Danke das funktioniert :). Wäre ich wohl nie drauf gekommen.
AW: Zellformat mit VBA inkl. Datenbalken
06.10.2017 19:42:09
Daniel
Es ist im Prinzip ganz einfach:
Der komplette Text, den du an das eigentliche Zahlenformat anhängst, muss in Anführungszeichen gesetzt werden.
Du setzt nur das / in solche und somit werden alle Nuller im angehängten Text zu teilen des eigentlichen Zahlenformats.
Gruß Daniel

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige