Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bedingte Formatierung Diagramm-VBA

Bedingte Formatierung Diagramm-VBA
10.12.2016 13:47:07
Monika
Hey Leute,
ich soll ein Makro schreiben, welches ein Diagramm erstellt und je nachdem was in einer gewissen Spalte steht soll der Datenpunkt ausgefüllt, leer oder gestreift sein.
Anbei eine Beispiel Version.
https://www.herber.de/bbs/user/109968.xlsm
Die Erstellung des Diagramms funktioniert soweit. Es fehlt aber noch die "bedingte Formatierung". Wenn in der Spalte stabil ein Haken ist soll der Datenpunkt ausgefüllt sein, bei Übergang und wandernder Minsukus soll der Datenpuntk gestreift sein und bei instabil eine weiße Hintergrundfarbe besitzen.
Hat jmd eine Idee ?
Danke schonmal =)
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bedingte Formatierung Diagramm-VBA
11.12.2016 12:25:29
fcs
Hallo Monika,
die Programmierung von Diagrammen unter VBA ist wegen der Vielzahl an Optionen etwas aufwendig.
Ich hab deinen Wunsch fast umsetzen können, es aber nicht geschafft die Farbe der Schraffur in die Farbe der Linien umzuwandeln.
Zur einfacheren Programmierung hab ich dein Makro auch etwas umgestellt.
LG
Franz
Sub TEST()
Dim wbName2 As String
Dim objChart As Chart, objReihe As Series, objPoint As Point
Dim lngColor As Long, lngWhite As Long, lngBlack As Long, Zeile As Long
Dim Zahl As Integer
wbName2 = "b = f(u)"
If SheetExists(wbName2) Then
Else
Charts.Add
ActiveSheet.Name = wbName2
End If
Set objChart = Sheets(wbName2)
'im Diagramm-Blatt ggf. alle Datenreihen löschen
With objChart
For Zahl = .SeriesCollection.Count To 1 Step -1
.SeriesCollection(Zahl).Delete
Next
End With
'Zahl = ActiveChart.SeriesCollection.Count
'MsgBox Zahl
With objChart
.ChartType = xlXYScatterLines
lngWhite = RGB(Red:=255, green:=255, blue:=255)
lngBlack = RGB(Red:=0, green:=0, blue:=0)
For Zahl = 1 To 2
'neue Datenreihe anlegen
.SeriesCollection.NewSeries
Set objReihe = .SeriesCollection(Zahl)
With objReihe
Select Case Zahl
Case 1 'ImageJ
.Name = "ImageJ"
.XValues = Range("Tabelle1[Geschwindigkeit" & Chr(10) & "'[m/min']]")
.Values = Range("Tabelle1[Strichtbreite" & Chr(10) & "ImageJ '[mm']]")
lngColor = RGB(Red:=255, green:=0, blue:=0) 'rot
Case 2 'Laser
.Name = "Laser"
.XValues = Range("Tabelle1[Geschwindigkeit" & Chr(10) & "'[m/min']]")
.Values = Range("Tabelle1[Strichtbreite" & Chr(10) & "Laser '[mm']]")
lngColor = RGB(Red:=0, green:=0, blue:=255) 'blau
End Select
'allgemeine Formatierung der Diagrammreihe
With .Format.Line
.Visible = msoTrue
.DashStyle = msoLineSolid
.Weight = 2
.ForeColor.RGB = lngColor
End With
'Basisformatierung der Datenpunkte
.MarkerForegroundColor = lngBlack 'Farbe Symbol
.MarkerBackgroundColor = lngColor
.MarkerSize = 12
End With
'spezielle Formatierung der Datenpunkte
With Range("Tabelle1[Geschwindigkeit" & Chr(10) & "'[m/min']]")
For Zeile = 1 To .Rows.Count
Set objPoint = objReihe.Points(Zeile)
With .Cells(Zeile, 1)
If .Offset(0, 2) = "a" Then 'Stabil
'Basisformatierung nicht ändern
ElseIf .Offset(0, 5) = "a" Then 'Instabil
objPoint.MarkerBackgroundColor = lngWhite
Else 'Übergang / wandernder Miniskus
With objPoint.Format.Fill
.Visible = msoTrue
.Patterned (16) ' msoPatternDarkUpwardDiagonal
End With
End If
End With
Next Zeile
End With
Next Zahl
End With
End Sub

Anzeige
AW: Bedingte Formatierung Diagramm-VBA
12.12.2016 14:04:40
Monika
perfekt danke =)
damit kann ich auf jeden Fall weiter arbeiten
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige