ist das gemein oder einfach nur böse?
So begann meine Mail. Warum mein Erstaunen?
Sehr geehrter Herr Martin,
ich stehe vor einem mittelschweren VBA- Problem und hoffe sehr, dass Sie mir hier wieder weiterhelfen können.
Ich habe tagtäglich mit unzähligen gruppiertes Shapes zu tun die ich per Excel Tabelle mit Adressdaten und Daten befülle.
Ab Spalte L2:L in der Excel Tabelle soll sich in Abhängigkeit des Textinhaltes (Ventil, Pumpe, Speicher) die Linien -Farbe des
Shapes ändern („Linecolor“) von Ventil = Grau, Pumpe = Blau und Speicher = grün. (siehe beiliegende Excel Mappe)
For Each shpInneresShape In shp.Shapes
If shpInneresShape.Name = „V“ Then
shpInneresShape.Text = blatt.Cells(i, 6).Value ‚Anzahl V
ElseIf shpInneresShape.Name = „P“ Then
shpInneresShape.Text = blatt.Cells(i, 7).Value ‚ ID
Ich hoffe sehr, dass Sie mir in diesem Problem weiterhelfen können.
Ich schaue mir das Problem an und schreibe:
so wie Sie die Dateninformation Prop.P_ID überprüfen, können Sie auch die Linienfarbe LineColor setzen:
If blatt.Cells(i, 12).Value = “Ventil” then
shpInneresShape.Cells(„LineColor“).FormulaU = „=17“
ElseIf blatt.Cells(i, 12).Value = “Pumpe” then
shpInneresShape.Cells(„LineColor“).FormulaU = „=4“
ElseIf blatt.Cells(i, 12).Value = “Speicher” then
shpInneresShape.Cells(„LineColor“).FormulaU = „=3“
Für Grau stehen Ihnen die Zahlen zwischen 14 und 20 zur Verfügung. Ich verwende gerne diese „alten“ Zahlen (sie stammen aus einer sehr alten Visio-Version) – Alternativ können Sie auch die Funktion RGB verwenden (ist aber umständlicher).
Vielen herzlichen Dank für Ihre schnelle Antwort 😊!!
Leider funktioniert die Farbänderung noch nicht wirklich – ich habe anbei eine Beispiel Visio Datei angefügt.
ist das gemein oder einfach nur böse?
1.) in der Zelle L3 steht nicht „Ventil“, sondern „Ventil “ (ein Leerzeichen am Ende). Deshalb habe ich die Zeile
ElseIf blatt.Cells(i, 12).Value = „Ventil“ Then
ElseIf blatt.Cells(i, 12).Value Like „Ventil*“ Then
2.) Sie habe eine Gruppe in der Gruppe in der Gruppe in der Gruppe! Eine Gruppe hat keine Linie. Also habe ich alle Kinder und Enkel und Urenkel … formatiert.
PS: ich habe auch noch ein Option Compared Text eingefügt, damit nicht zwischen Groß- und Kleinschreibung unterschieden wird.
If blatt.Cells(i, 12).Value Like „Ventil*“ Then
shpInneresShape.Cells(„LineColor“).FormulaU = „=17“ ‚ — grau
Call MacheInnenBunt(shpInneresShape, 17)
ElseIf blatt.Cells(i, 12).Value Like „Pumpe*“ Then
shpInneresShape.Cells(„LineColor“).FormulaU = „=4“ ‚ — blau
Call MacheInnenBunt(shpInneresShape, 4)
ElseIf blatt.Cells(i, 12).Value Like „Speicher*“ Then
shpInneresShape.Cells(„LineColor“).FormulaU = „=3“ ‚ — grün
Call MacheInnenBunt(shpInneresShape, 3)
Sub MacheInnenBunt(vsShape As Shape, Farbe As Integer)
For i = 1 To vsShape.Shapes.Count
vsShape.Shapes(i).Cells(„LineColor“).FormulaU = „=“ & CStr(Farbe)
If vsShape.Shapes(i).Shapes.Count > 0 Then
Call MacheInnenBunt(vsShape.Shapes(i), Farbe)