Hallo.
ich habe ein Pivotdiagramm erstellt. Nun möchte ich nach der tollen Anleitung von Excel – Diagrammfarben per VBA zuweisen (von Andreas Thehos) vordefinierte (Hintergrund-)Farben in der Eingabemaske für das PivotDiagramm zu nutzen.
Andreas schreibt in seine Eingabemaske die RGB Werte alle einzeln und händisch in drei aufeinanderfolgende Spalten und liest diese dann als Wert aus. Das finde ich für den Nutzer recht umständlich, da dieser ja nicht alle Farbcodes im Kopf hat. So möchte ich die vorgegebene (Hintergrund)Farbe als RGB direkt auslesen, über:
.Format.Fill.ForeColor.RGB = RGB(R, G, B)
Das Ganze habe ich von dieser dieser (Return background color of selected cell) aus einer public function abkopiert. Leider meckert der bei folgender Zeile mit einem Syntaxfehler:
.Format.Fill.ForeColor.RGB = RGB(Cells(j, 4).(ColorValue Mod 256) & ", " & Cells(j, 4).((ColorValue \ 256) Mod 256) & ", " & Cells(j, 4).(ColorValue \ 65536))
Die Farben sollen direkt aus der jeweiligen Zelle genommen werden. Kann mir jmd. sagen, warum er mir diesen Fehler ausspuckt?
Hier der komplette Code:
Sub Farben_Diagramm()
Dim chtDiagramm As Chart
Dim i As Integer, j As Integer, intColor As Integer, intSeries As Integer, Color As Integer
Dim strName As String, strChart As String, strBlatt As String
Dim rng As Range
strBlatt = "Analyse"
strChart = "Personalkapazitaet"
Set chtDiagramm = Sheets(strBlatt).ChartObjects(strChart).Chart
intSeries = chtDiagramm.SeriesCollection.Count
For i = 1 To intSeries
strName = chtDiagramm.SeriesCollection(i).Name
For j = 2 To Range("RangePhase").Value + 1
If Sheets("Pers_Input").Cells(j, 1).Value = strName Then
'Textfarbe bestimmen: 'intColor = Sheets(„Pers_Input“).Cells(j, 14).Value
With chtDiagramm.SeriesCollection(strName)
.Format.Fill.Visible = msoTrue
.Format.Fill.ForeColor.RGB = RGB(Cells(j, 4).(ColorValue Mod 256) & ", " & Cells(j, 4).((ColorValue \ 256) Mod 256) & ", " & Cells(j, 4).(ColorValue \ 65536))
'.Format.Fill.ForeColor.RGB = RGB(Sheets("Pers_Input").Cells(j, 11).Value, _
Sheets("Pers_Input").Cells(j, 12).Value, Sheets("Pers_Input").Cells(j, 13).Value)
End With
End If
Next j
Next i
End Sub
Ich nutze Excel2019.
Vielen Dank für eure Hilfe.
VG Sascha
|