Gruppe in der Gruppe in der Gruppe …

Hallo Herr H.
ist das gemein oder einfach nur böse?
####
So begann meine Mail. Warum mein Erstaunen?
Es begann so:
Sehr geehrter Herr Martin,
 
ich stehe vor einem mittelschweren VBA- Problem und hoffe sehr, dass Sie mir hier wieder weiterhelfen können.
 
Folgendes Problem:
 
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:
Hallo Herr H.,
 
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“
End If
 
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).
####
Hallo Herr Martin,
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.
####
Hallo Herr H.,
ist das gemein oder einfach nur böse?
Im Ernst:
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
 
geändert in:
 
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.
Dann klappt es!
 
Liebe Grüße
 
Rene Martin
 
PS: ich habe auch noch ein Option Compared Text eingefügt, damit nicht zwischen Groß- und Kleinschreibung unterschieden wird.
 
Der Code:
[…]
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)
End If
 
[…]
Sub MacheInnenBunt(vsShape As Shape, Farbe As Integer)
Dim i 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)
End If
Next
End Sub
 
 
 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert