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

Daten mit Treeview darstellen

Forumthread: Daten mit Treeview darstellen

Daten mit Treeview darstellen
23.05.2016 15:09:56
Marco
Hallo Leute ich habe hier einen interessanten Eintrag über Treeview gefunden leider gibt es zu dem Thema kaum Informationen im Netz. In dem Beitrag wurde eine Beispieldatei hochgeladen.

Die Datei https://www.herber.de/bbs/user/62395.xls wurde aus Datenschutzgründen gelöscht


Diese wollte ich meinen Bedürfnissen anpassen aber ich bekomme immer einen Syntaxfehler. Anstatt jeden Namen der Arbeitsblätter inklusive der Zelle A1 in das Textfenster zu schreiben möchte ich nur die Daten aus einem Tabellenblatt einlesen z.B. A5:A2000, aber das Funktioniert nicht. Ich kann immer nur einen Zellenwert anzeigen lassen obwohl ich "A5:A2000" geschrieben habe. Wieso ist das so? Der Code sieht aktuell so aus.
Private Sub TreeView1_Click()
Dim s As String, i As Integer
With TreeView1.SelectedItem
s = .Text
i = InStr(1, s, "-", vbTextCompare)
If i > 0 Then
s = Trim(Left(s, i - 1))
End If
If .Children = False Then
Workbooks(.Parent.Text).Worksheets(s).Activate
Else
Workbooks(TreeView1.SelectedItem.Text).Activate
End If
End With
End Sub
Private Sub UserForm_Initialize()
Dim wkb As Workbook
Dim wks As Worksheet
Dim ndeMain As Node, ndeSecond As Node
Dim iCounter As Integer
With TreeView1
For Each wkb In Workbooks
iCounter = iCounter + 1
Set ndeMain = .Nodes.Add(Text:=wkb.Name)
For Each wks In wkb.Worksheets
Set ndeSecond = .Nodes.Add(relative:=ndeMain, relationship:=tvwChild, Text:=wks.Range("A5"). _
Value)
Set ndeSecond = .Nodes.Add(relative:=ndeMain, relationship:=tvwChild, Text:=wks.Range(" _
B5").Value)
ndeSecond.Sorted = True
Next wks
Next wkb
ndeMain.Expanded = True
ndeMain.Sorted = True
End With
End Sub
Grüße Marco

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten mit Treeview darstellen
23.05.2016 23:54:21
Marco
Danke Luschi den Beitrag kenne ich schon. Ich habe mir alle Beiträge hier im Forum zu dem Thema angeschaut aber ich habe es nicht auf die Reihe bekommen. Ich schaffe es nur statisch aber nicht dynamisch. So sieht aktuell meine Datei aus. Wenn mir da jemand behilflich sein könnte wäre ich da sehr dankbar.

Die Datei https://www.herber.de/bbs/user/105755.xlsm wurde aus Datenschutzgründen gelöscht


Grüße Marco

Anzeige
AW: Daten mit Treeview darstellen
24.05.2016 05:25:10
Luschi
Hallo Marco,
hier mal mein Beispiel dazu:

Die Datei https://www.herber.de/bbs/user/105756.xlsm wurde aus Datenschutzgründen gelöscht


Gruß von Luschi
aus klein-Paris

AW: Daten mit Treeview darstellen
24.05.2016 07:47:14
Marco
Wow Luschi es funktioniert perfekt es macht ja sogar mehr als ich hier überhaupt gewollt habe. Es wird sortiert und die Begriffe wie BMW und Sitz werden nicht doppelt angezeigt. Ich habe ganz anders versucht das sortier Problem zu lösen nämlich so:
    ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort.SortFields.Add Key:= _
Range("A3"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort.SortFields.Add Key:= _
Range("B3"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort.SortFields.Add Key:= _
Range("C3"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Deine Variante ist ja viel kürzer und elegeanter. Jetzt versuche ich mal dein Makro noch um 3 Spalten zu erweitern für den Fall das es noch weiter in die Tiefe geht.
1. Frage wenn ich möchte dass das auch automatisch um die Spalten erweitert wird muss man das dann mit einer zusätzlichen schleife versehen?
2. Kann man das Treeview Fenster anstatt in einem UserForm auch direkt ohne knopfdruck in einem Tabellenblatt anzeigen lassen? Ich finde dafür nämlich kein Symbol oder muss ich das aus einem Verzeichnis erst hinzufügen?
3. Gibt es einen Befehl der es mir ermöglicht Spalte C bis Spalte F zusammengefasst als dritten Tree anzuzeigen anstatt nur Spalte C alleine? In Excel weiß ich dass das geht aber in VBA?
Aber erst mal noch ein riesen großes danke schön an dich jetzt kann ich mich total austoben =)
Viele Grüße Marco

Anzeige
AW: Daten mit Treeview darstellen
24.05.2016 10:45:43
Marco
Morgen alle, ich habe heute mit dem Beispiel von Luschi etwas rum probiert dabei ist mir aufgefallen das ich immer die Fehlermeldung "Laufzeitfehler 35603, Invalid Key" bekomme sobald ich in der Datenbank anstatt einem Buchstaben nur Zahlen angebe oder eine Leerzeile drin habe. Kann ich das irgendwie abschalten?
Grüße Marco

Anzeige
AW: Daten mit Treeview darstellen
24.05.2016 12:10:43
Luschi
Hallo Marco,
zu 1er prof. Lösung gehört natürlich auch eine Fehlerbehandlung (On Error ...) bzw.
Fall-Unterscheisungen (Select Case), falls es doch auftritt.
In diesem einfachen Beispiel sind ein paar Regeln zu beachten:
- alle Zellen sind vom Typ 'Text' auch wenn der Inhalt wie Zahlen aussieht
- keine Leerzellen
- keine leeren Zellinhalte, die durch Formeln entstehen
- möglichst alle zu 1nem Knoten gehörenden Fakten unmittelbar untereinander
  (nicht wie in meinem Beispiel!)
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Daten mit Treeview darstellen
24.05.2016 18:30:33
Marco
Sorry Luschi ich kann dir irgendwie nicht folgen ^^ tut mir leid. Es ist ja auch nicht unbedingt relevant. Ich werde glaube ich nie eine Zelle haben in der nur Zahlen in der ersten Spalte stehen. Leere Zellen werde ich auch nie dazwischen haben bzw. ich würde es beim öffnen der datei immer vorher per Makro sortieren lassen.
Aber nur zum Verständnis tritt der Fehler nur in der Spalte A auf, wenn eine Zelle leer oder mit Zahlen gefüllt ist? Bei den anderen Spalten ist das noch nicht der Fall gewesen.
Grüße Marco

Anzeige
AW: Daten mit Treeview darstellen
24.05.2016 18:39:08
Luschi
Hallo Marco,
mach doch noch mal 1 Beispiel mit den Problemchen, die zeigen, wo der Schuh drückt.
Gruß von Luschi
aus klein-Paris
;
Anzeige
Anzeige

Infobox / Tutorial

Daten mit Treeview darstellen in Excel


Schritt-für-Schritt-Anleitung

Um Daten mit einem Treeview in Excel darzustellen, kannst Du die folgende Vorgehensweise nutzen:

  1. Erstelle ein UserForm:

    • Öffne den VBA-Editor (ALT + F11).
    • Füge ein neues UserForm hinzu.
    • Ziehe ein Treeview-Control auf das UserForm.
  2. Füge den benötigten Code hinzu:

    • Verwende den folgenden VBA-Code, um die Daten in das Treeview zu laden:
    Private Sub UserForm_Initialize()
       Dim wkb As Workbook
       Dim wks As Worksheet
       Dim ndeMain As Node, ndeSecond As Node
       Dim iCounter As Integer
       With TreeView1
           For Each wkb In Workbooks
               iCounter = iCounter + 1
               Set ndeMain = .Nodes.Add(Text:=wkb.Name)
               For Each wks In wkb.Worksheets
                   Set ndeSecond = .Nodes.Add(relative:=ndeMain, relationship:=tvwChild, Text:=wks.Range("A5").Value)
                   Set ndeSecond = .Nodes.Add(relative:=ndeMain, relationship:=tvwChild, Text:=wks.Range("B5").Value)
               Next wks
           Next wkb
           ndeMain.Expanded = True
           ndeMain.Sorted = True
       End With
    End Sub
  3. Testen:

    • Starte das UserForm, um zu überprüfen, ob die Daten korrekt im Treeview angezeigt werden.

Häufige Fehler und Lösungen

  • Laufzeitfehler 35603, Invalid Key:

    • Dieser Fehler tritt auf, wenn Du in der Datenbank statt eines Buchstabens nur Zahlen oder leere Zellen angibst. Du kannst dies verhindern, indem Du sicherstellst, dass alle Zellen vom Typ 'Text' sind und keine leeren Zellen vorhanden sind.
  • Syntaxfehler:

    • Wenn Du beim Anpassen des Codes einen Syntaxfehler erhältst, überprüfe, ob alle Anführungszeichen und Klammern korrekt gesetzt sind.

Alternative Methoden

Wenn Du die Treeview-Daten nicht in einem UserForm anzeigen möchtest, kannst Du die Treeview auch direkt in einem Excel-Arbeitsblatt implementieren, indem Du das ActiveX-Steuerelement für das Treeview verwendest. Dies erfordert jedoch zusätzliche Schritte zum Hinzufügen des Controls in Excel.


Praktische Beispiele

Ein Beispiel für ein Excel VBA Treeview könnte die Darstellung einer Hierarchie von Produkten sein. Hierbei könnten Kategorien als Hauptknoten und Produkte als untergeordnete Knoten im Treeview angezeigt werden.

Private Sub UserForm_Initialize()
    Dim ndeCategory As Node
    Set ndeCategory = TreeView1.Nodes.Add(Text:="Kategorien")
    Dim ndeProduct As Node
    Set ndeProduct = TreeView1.Nodes.Add(relative:=ndeCategory, relationship:=tvwChild, Text:="Produkt A")
    Set ndeProduct = TreeView1.Nodes.Add(relative:=ndeCategory, relationship:=tvwChild, Text:="Produkt B")
End Sub

Tipps für Profis

  • Fehlerbehandlung einbauen: Baue eine Fehlerbehandlung mit On Error Resume Next oder Select Case ein, um potenzielle Laufzeitfehler abzufangen.

  • Dynamische Anpassung: Wenn Du das Treeview dynamisch erweitern möchtest, nutze Schleifen, um alle gewünschten Daten aus den Zellen zu lesen und hinzuzufügen.


FAQ: Häufige Fragen

1. Wie kann ich das Treeview-Fenster ohne UserForm anzeigen?
Um das Treeview direkt in einem Arbeitsblatt anzuzeigen, musst Du das ActiveX-Steuerelement für das Treeview hinzufügen und den entsprechenden Code anpassen.

2. Kann ich mehrere Spalten im Treeview anzeigen?
Ja, Du kannst mehrere Spalten zusammenfassen, indem Du die Werte der gewünschten Zellen in einer einzigen Textvariable kombinierst, bevor Du sie zum Treeview hinzufügst.

3. Gibt es spezielle Anforderungen für die Verwendung von Treeview in Excel?
Ja, stelle sicher, dass Du Excel mit aktiviertem VBA verwendest und das Treeview-Control in deiner Version verfügbar ist.

Mit diesen Anleitungen und Tipps kannst Du das Excel Treeview effektiv nutzen, um Deine Daten übersichtlich darzustellen!

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