Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ORG Chart Problem mit Assistent Anzeige

ORG Chart Problem mit Assistent Anzeige
09.06.2020 20:17:42
Stefan
Hallo,
ich habe ein ganz nettes Tool entwickelt, wo man Organigramme , Projektstrukturpläne, Stammbäume u.ä. ganz nach belieben aufbauen und dann farblich angepasst darstellen und auch exportieren kann. Wenn ich die neue Assistentendarstellung verwende , hab ich das Problem, dass nicht alle Smart Art Chart Arten diese Darstellung beherrschen und in diesen Fällen das Makro einfach (logisch , dass das passiert) abstürzt.
Mein Kopf schwirrt gerade, aber vielleicht hat ja einer von Euch die rascheste Idee, wie ich das Abstürzen verhindere, dass für diese Chart Art einfach die Default Darstellung (ohne Assistent) genommen wird.?
Anbei das Codesnippet und auch meine Beispieldatei,
in fett die problematischen Codezeilen meinerseits. 5 Charttypen sind auswählbar, für Horizontal2 und Table Hierarchy geht die Assistentendarstellung nicht.
Sub AddChildren(ByVal QParent As SmartArtNode, ByVal Code As String)
Dim Level As Long
Dim v As Variant
Dim r As Long
Dim QChild As SmartArtNode
' Dissect the code
v = Split(Code, ".")
' Next level
Level = UBound(v) + 2
' Loop through the rows
For r = 2 To Range("A1").End(xlDown).Row
' Look for correct level and code
If Range("C" & r).Value = Level And Range("H" & r).Value Like Code & ".*" Then
' 08.06.2020 Create new node - hier muss man für Assistant anpassen
 If Range("O" & r).Value = "" Then
Set QChild = QParent.AddNode(msoSmartArtNodeBelow, msoSmartArtNodeTypeDefault)
Else
Set QChild = QParent.AddNode(msoSmartArtNodeDefault, msoSmartArtNodeTypeAssistant)
End If

'alt Set QChild = QParent.AddNode(msoSmartArtNodeBelow)
' Set node properties
With QChild.TextFrame2.TextRange
.Text = Range("B" & r).Value
.Font.Fill.ForeColor.RGB = Range("C" & r).Font.Color
.Font.Size = 5
.Font.Italic = Range("C" & r).Font.Italic
If Range("C" & r).Font.Underline = xlUnderlineStyleSingle Then
.Font.UnderlineColor = Range("C" & r).Font.Color    'hier wird die  _
Schriftfarbe übernommen - color of font
.Font.UnderlineStyle = msoUnderlineSingleLine   'hier kommt unterstrichen? - _
underlined?
End If
.Font.Strikethrough = Range("C" & r).Font.Strikethrough 'hier kommt  _
durchgestrichen? - strikethrough?
'.Font.FontStyle = Range("C" & r).Font.FontStyle
.Font.Bold = Range("C" & r).Font.Bold
End With
QChild.Shapes(1).Fill.ForeColor.RGB = Range("C" & r).Interior.Color
On Error Resume Next
QChild.Shapes(1).Line.DashStyle = Range("D" & r).Value
QChild.Shapes(1).Line.Weight = Range("E" & r).Value
QChild.Shapes(1).Line.ForeColor.RGB = Range("F" & r).Interior.Color
On Error GoTo 0
If strType = "Pic ORG" Then
'Stefan Sandauer - 8.6.2016
If Range("G" & r).Value = "" Then
QChild.Shapes(2).Fill.UserPicture ThisWorkbook.Path & "\img0.wmf"
Else
QChild.Shapes(2).Fill.UserPicture ThisWorkbook.Path & "\img" & Range("G" &  _
r).Value & ".wmf"
End If
End If
' Recursion!
Call AddChildren(QChild, Range("H" & r).Value)
End If
Next r
End Sub
ttps://www.herber.de/bbs/user/138171.xlsm

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

Betreff
Datum
Anwender
Anzeige
AW: ORG Chart Problem mit Assistent Anzeige
14.06.2020 14:54:55
fcs
Hallo Stefan,
ich hab deine Datei jetzt mal unter der neuesten Version Office 365 getestet.
Bei mir laufen die gewählten Chart-Typen mit Ausnahme von "Pic ORG" ohne Fehler-Meldung durch.
Wenn ich den Typ auswähle, dann schmiert Excel komplett ab.
Die Excel-Version scheint eine Rolle bei dem Fehler zu spielen.
Ich schlage vor, das du eine Fehlerbehandlung in dein Makro einbaust. Wenn der Fehler auftritt, dann verzweigt das Makro in die Fehlerbehandlung und du kannst eine gezielte Korrektur-Aktion einbauen.
Nachfolgend dein Makro entsprechend angepasst.
Da ich die zugehörige Fehlernummer nicht kenne musst du noch etwas nacharbeiten - siehe meine Kommentare.
Ich bin auch nicht sicher, ob meine Korrekturzeile funktioniert.
LG
Franz
Sub AddChildren(ByVal QParent As SmartArtNode, ByVal Code As String)
Dim Level As Long
Dim v As Variant
Dim r As Long
Dim QChild As SmartArtNode
On Error GoTo Fehler 'fcs 2020-06-14
' Dissect the code
v = Split(Code, ".")
' Next level
Level = UBound(v) + 2
' Loop through the rows
For r = 2 To Range("A1").End(xlDown).Row
' Look for correct level and code
If Range("C" & r).Value = Level And Range("H" & r).Value Like Code & ".*" Then
' 08.06.2020 Create new node - hier muss man für Assistant anpassen
If Range("O" & r).Value = "" Then
Set QChild = QParent.AddNode(msoSmartArtNodeBelow, msoSmartArtNodeTypeDefault)
Else
Set QChild = QParent.AddNode(msoSmartArtNodeDefault, msoSmartArtNodeTypeAssistant)
End If
'alt Set QChild = QParent.AddNode(msoSmartArtNodeBelow)
' Set node properties
With QChild.TextFrame2.TextRange
.Text = Range("B" & r).Value
.Font.Fill.ForeColor.RGB = Range("C" & r).Font.Color
.Font.Size = 5
.Font.Italic = Range("C" & r).Font.Italic
If Range("C" & r).Font.Underline = xlUnderlineStyleSingle Then
.Font.UnderlineColor = Range("C" & r).Font.Color    'hier wird die  _
Schriftfarbe übernommen - color of font
.Font.UnderlineStyle = msoUnderlineSingleLine   'hier kommt unterstrichen? - _
underlined?
End If
.Font.Strikethrough = Range("C" & r).Font.Strikethrough 'hier kommt  _
durchgestrichen? - strikethrough?
'.Font.FontStyle = Range("C" & r).Font.FontStyle
.Font.Bold = Range("C" & r).Font.Bold
End With
QChild.Shapes(1).Fill.ForeColor.RGB = Range("C" & r).Interior.Color
On Error Resume Next
QChild.Shapes(1).Line.DashStyle = Range("D" & r).Value
QChild.Shapes(1).Line.Weight = Range("E" & r).Value
QChild.Shapes(1).Line.ForeColor.RGB = Range("F" & r).Interior.Color
On Error GoTo 0
If strType = "Pic ORG" Then
'Stefan Sandauer - 8.6.2016
If Range("G" & r).Value = "" Then
QChild.Shapes(2).Fill.UserPicture ThisWorkbook.Path & "\img0.wmf"
Else
QChild.Shapes(2).Fill.UserPicture ThisWorkbook.Path & "\img" _
& Range("G" & r).Value & ".wmf"
End If
End If
' Recursion!
Call AddChildren(QChild, Range("H" & r).Value)
End If
Next r
'fcs 2020-06-14 - Anfang
Err.Clear
Fehler:
With Err
Select Case .Number
Case 0 'alle OK
Case 9999 'Fehler-Nummer entsprechend  Meldung anpassen
Set QChild = QParent.AddNode(msoSmartArtNodeBelow, msoSmartArtNodeTypeDefault)
Resume Next
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
'die folgenden beiden Zeilen löschen wenn oben die korrekte Fehlernummer  _
eingetragen ist
Set QChild = QParent.AddNode(msoSmartArtNodeBelow, msoSmartArtNodeTypeDefault)
Resume Next
End Select
End With
'fcs 2020-06-14 - Ende
End Sub

Anzeige
AW: ORG Chart Problem mit Assistent Anzeige
15.06.2020 15:47:51
Stefan
Hallo Franz,
Danke, Ich verwende nur mehr Office 365. Das Problem für Dich bei Pic ORG mit dem Absturz resultiert daher, dass Du keine img0.wmf Datei zumindest im selben Folder liegen hast. Wenn in dieser Projekt/Ampelgrafik Anzeige diese Datei nicht vorhanden ist, gibts zwangsläufig den Crash. Erverwendet dieses image, wenn keine Daten extra angegeben sind (Spalte G: Status leer = 0) 1 - 36..
Ich hab die Problematik mit einer Select Case Abfrage abgefangen, dass für den Fall, dass die beiden erwähnten Chart Typen in Verbindung mit Assistent eingegeben werden, dass Excel dies ignoriert und die Anzeige wie normal verwendet. Im Anhang hast Du diese img Datei(mit allen anderen, die ich verwende) zum Test. Sie müssen im selben Ordner wie das Excel sein.
https://www.herber.de/bbs/user/138316.zip
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige