Hallo Leute,
ich habe ein Makro welches mir 5000 Diagrammbalke in verschiedene Farben einfärbt. (rot Zielwert nicht erreicht, Grün Zielwert erreicht, blau kein Zielwert vorhanden)
Das funktioniert auch alles super. Jetzt möchte ich gern für verschiedene Ist-Werte unterschiedlich Formate in der Datenbeschriftung haben. Alle Zahlen zwischen 0 - 99,94 sollen das Format: "0,#" haben. Alle Zahlen größer als 99,94 sollen mit dem Format "###" formatiert werden. (der zweck dahinter ist das alle Zahlen über 100 keine kommastellen haben dürfen)
Einzelne Zelle konnte Ich mit Hilfe Selection.NumberFormat = "###" schon formatieren. Leider funktioniert das ganze nicht mit größer kleiner Vergleich.
Die betreffenden Zeilen stehen ganz am Ende.
ElseIf i >= 99.95 Then
Selection.NumberFormat = "###"
ElseIf i <= 99.95 Then
Selection.NumberFormat = "0,#"
Dim p As Integer 'Anzahl Datenpunkte
Dim i, s As Double
Dim ist, Zielwert As Variant
Dim ptnum As Integer
Dim sKennzahl, sDiaName As String
p = 1
sKennzahl = ActiveSheet.Range("A1").Text
Application.ScreenUpdating = False
'Zählt Datenreihen, wenn nur eine vorhanden, wird die Definition der Zielwert und Ist-Werte übersprungen.
If ActiveChart.SeriesCollection.Count = 1 Then
GoTo SPRUNG1
Else:
End If
ist = ActiveChart.FullSeriesCollection("Ist-Wert").Values
On Error Resume Next
Zielwert = ActiveChart.FullSeriesCollection("Zielwert").Values
On Error GoTo 0
SPRUNG1:
ptnum = ActiveChart.FullSeriesCollection("Ist-Wert").Points.Count
For p = 1 To ptnum
'Zählt Datenreihen, wenn nur eine vorhanden, wird der Zielwert-Ist-Vergleich übersprungen.
If ActiveChart.SeriesCollection.Count = 1 Then
GoTo SPRUNG2
Else:
End If
'Funktionsähnliche Zuordnung der Variablen i und s zu den Werten der jeweiligen Datenreihen am Punkt p
On Error Resume Next
i = ist(p)
s = Zielwert(p)
On Error GoTo 0
ActiveChart.FullSeriesCollection("Ist-Wert").Points(p).Select
'Zielwert-Ist-Vergleich und anschließendes Einfärben des ausgewählten Balkens
'If-Schleife um Kennzahl festzustellen, wichtig für Farbformatierung
If InStr(sKennzahl, "QZF") Or InStr(sKennzahl, "QZS") Or InStr(sKennzahl, "Nacharbeit") Or _
InStr(sKennzahl, "Energie") Or InStr(sKennzahl, "Zeit") Then
If s = 0 Or s = Null Then
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(68, 114,196) 'blau
.Transparency = 0
.Solid
End With
ElseIf i <= s Then
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(112, 173, 71) 'grün
.Transparency = 0
.Solid
End With
ElseIf i > s Then
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(252, 81, 34) 'rot
.Transparency = 0
.Solid
End With
End If
Else:
If s = 0 Or s = Null Then
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(68, 114, 196) 'blau
.Transparency = 0
.Solid
End With
ElseIf i >= s Then
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(112, 173, 71) 'grün
.Transparency = 0
.Solid
End With
ElseIf i < s Then
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(252, 81, 34) 'rot
.Transparency = 0
.Solid
End With
ElseIf i >= 99.95 Then
Selection.NumberFormat = "###"
ElseIf i <= 99.95 Then
Selection.NumberFormat = "0,#"
End If
End If
|