Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1028to1032
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

Treeview auslesen

Treeview auslesen
06.12.2008 19:55:00
Andreas
Hallo,
ich hätte mal eine Frage.
Ich habe eine Excel Tabelle, in der ich mittels VBA eine UserForm aufrufe. Auf dieser UserForm ist ein TreeView Element, welches ich mittels verschiedener Textfelder auf der UserForm mit Inhalt fülle.
Mein Treeview-Element sieht nach dem Befüllen so aus:
|KundenName, Straße, Ort
|--- Baumart, Bezeichnung, Herkunftsland
|--- Baumart2, Bezeichnung2, Herkunftsland2
Nun möchte ich den gesamten Inhalt des Treeviews per Klick auf ein Tabellen-Blatt übertragen.
Dabei sollte in die Zelle
A1 der KundenName
A2 die Straße
A3 der Ort
A6 die Baumart
B6 die Bezeichnung
C6 das Herkunftsland
eingefügt werden. Wenn ich nun einen zweiten Kunden eingegeben habe, sollte der Aufbau der Gleiche sein, nur sollten zwischen Kundenbestellung 1 und Kundenbestellung 2 ca. 3 leere Zeilen sein.
Ich habe leider überhaupt keine Ahnung wie ich an die Sache rangehen soll. Kann mir bitte jemand eine helfende Hand reichen?
Vielen Dank!
Mfg. Andreas

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beispielmappe?
07.12.2008 09:55:00
Erich
Hi Andreas,
wie wäre es mit einer Beispielmappe? Sonst müsste jeder deine UF mit dem TreeView nachbauen,
vermutlich dann auch noch mit einer nicht passenden Struktur.
Evtl. hilft auch schon eine Suche nach TreeView hier im Archiv.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Beispielmappe?
07.12.2008 11:05:46
Andreas
Hi Erich,
anbei habe ich die Datei hochgeladen. Die Daten werden einfach mal so in das Treeview übernommen. Die Struktur wie sie im Treeview angezeigt werden ist egal. Wenn es in einer anderen Form einfacher ist die Daten in die Tabelle "Bestellungen" zu übermitteln, ist es auch ok.
https://www.herber.de/bbs/user/57422.xls
Weiß jemand, wie ich das jetzt angehen kann?
Danke im Voraus.
Mfg. Andreas
Anzeige
AW: Beispielmappe?
07.12.2008 14:43:00
ChristianM
Hallo,
da du ja immer 2 Ebenen hast kommst du zB so an die Einträge :

Private Sub CommandButton4_Click()
Dim n As Node
For Each n In Me.TreeView1.Nodes
If Not n.Parent Is Nothing Then MsgBox n.Parent & ":" & n
Next
'... weiter mit deinem Code


Die Übertragung auf die Tabelle dürfte ja kein Problem sein.
Gruß
Christian

AW: Beispielmappe?
07.12.2008 15:24:00
Andreas
Hi Christian,
danke für die schnelle Antwort. Dabei besteht aber noch ein kleines Problem. Wenn ich die Child-Objekte nicht nacheinander eintrage, sondern nachträglich noch einmal eines ergänze, erfolgt die Ausgabe nach der Reihenfolge der Eintragungen und nicht sortiert nach dem Besteller. Irgendwie müssten die Einträge sortiert (wie im TreeView) und nach dem Besteller zusammengefasst werden.
So dass ich in den Variablen lediglich einmal das Parent habe und gleich danach die Childs angezeigt werden. Ich kann die Daten jetzt zwar in die Tabelle übertragen, aber wenn Besteller A zwei Pflanzen bestellt, wird diese Bestellung nicht zusammengefasst, sondern mit einem Trenner angezeigt (so als ob es sich um einen neuen Besteller handelt).
Die Ausgabe sollte quasi so erfolgen:
A1 der KundenName
A2 die Straße
A3 der Ort
A6 die Baumart
B6 die Bezeichnung
C6 das Herkunftsland
A7 die Baumart2
B7 die Bezeichnung2
C7 das Herkunftsland2
Weißt du wie ich das Problem lösen könnte? Mit TreeView-Steuerelementen hatte ich bis jetzt leider nicht viel am Hut.
Mfg. Andreas
Anzeige
AW: Beispielmappe?
08.12.2008 20:31:05
ChristianM
Hallo Andreas,
Wenn ich die Child-Objekte nicht nacheinander eintrage, sondern nachträglich noch einmal eines ergänze, erfolgt die Ausgabe nach der Reihenfolge der Eintragungen und nicht sortiert nach dem Besteller. Daher habe ich in meinem Bsp die Parents und Childs zusammengesetzt.
Besser fände ich es, alle Einträge in eine Daten-Tabelle zu schreiben, bei der jede Zeile einem Datensatz entspricht. Hier kannst du beliebig filtern, sortieren, etc. Deine Zuordnung in Blöcke pro Kunde (Tabelle Bestellung) ist vielleicht gut für einen Ausdruck, aber IMHO nicht geeignet um die Daten zu verwalten.
Wenn du direkt von dem UserFormular zur Bestell-Liste übertragen willst, dann baue einfach eine _ zweite Schleife ein. z.B:

Private Sub CommandButton4_Click()
Dim n As Node, c As Node
Dim sPrnt$, sRes$
For Each n In Me.TreeView1.Nodes
If n.Parent Is Nothing Then
sPrnt = n
For Each c In Me.TreeView1.Nodes
If Not c.Parent Is Nothing Then
If c.Parent = sPrnt Then sRes = sRes & sPrnt & ":" & c & vbLf  'hier nur als Bsp
End If
Next
End If
Next
MsgBox sRes                                                                'hier nur als Bsp
'... usw.

Gruß
Christian

Anzeige
AW: Beispielmappe?
08.12.2008 23:14:00
Andreas
Hi Christian,
die Tabelle soll am Ende nicht zum Archivieren sein, sondern soll nur einmal vom E-Mail Empfänger ausgedruckt werden können. Von daher reicht die Gestaltung der Ausgabe denke ich aus.
Ich probier nun schon seit 3 Stunden rum aber ich kriegs einfach nicht gebacken.
Ich habe mein Excel File erneut hochgeladen. In "Tabelle 1" soll die Auswertung/Ausgabe stattfinden. Aussehen soll es am Ende wie in der Tabelle "Muster". Kannst du mal nach meinem Quellcode schauen was ich wie umprogrammieren muss bzw. könntest mir evtl. ein wenig helfend unter die Arme greifen?
https://www.herber.de/bbs/user/57463.xls
Im Voraus schon mal vielen vielen Dank!
Mfg. Andreas
Anzeige
AW: Beispielmappe?
09.12.2008 20:48:20
ChristianM
hallo,
da sind so viele Fehler drin...
- du übergibst der Collection ein Range-Objekt anstatt Strings,
- Referenzierung fehlt,
- 90% deine Variablen sind als Variant deklariert (ist kein Fehler, aber schau mal in die Basics),
- etc.
Was Treeviews angeht bin ich auch kein Experte. Die Art der Prüfung ob es ein Parent oder child ist, ist mir adhoc so eingefallen, aber sie läuft. Das geht bestimmt eleganter, aber schlussendlich hast du mein Beispiel falsch umgesetzt, schau mal genau hin.
Gruß
Christian
AW: Beispielmappe?
10.12.2008 18:18:10
Andreas
Hi,
ich glaube ich habe den Wald vor lauter Bäumen nicht mehr gesehen :o)
Du hast recht. Ich übergebe der Collection ein Range Objekt. Ich werde es noch ändern :o)
Was ich aber nicht nachvollziehen kann ist, dass die Referenzierung fehlen würde und 90% der Variablen als Variant deklariert wären. Ich habe bei fast allen Variablen Integer, Long oder Strings vergeben. Lediglich bei 1-2 bei denen sich der Übergabewert ändern kann habe ich Variant.
Auf jeden Fall habe ich meinen Fehler auch mit der Überprüfung erkannt und korrigiert :o)
Jetzt klappt endlich alles so wie ich es will.
Nochmals vielen Dank!
Mfg. Andreas
P.S. Ich schaue noch mal rein, wenn du mir vielleicht noch genau sagen könntest wo die Referenzierung fehlt und wo ich die übermäßigen Variant-Variablen deklariert habe :o)
Anzeige
AW: Deklarationen
10.12.2008 19:26:22
Erich
Hi Andreas,
bei der Variablendeklaration erliegst du einem recht verbreiteten Irrtum.
Dim a, b, c As Integer legt NICHT drei Integers an.
a und b sind Variant, nur c ist Integer.
Richtig wäre
Dim a As Integer, b As Integer, c As Integer
Zitat aus der VBA-Hilfe: (Beispiel zu Dim)

' Mehrere Deklarationen in einer Zeile. AndereVar hat den Typ
' Variant, da kein Typ angegeben wird.
Dim AndereVar, Auswahl As Boolean, GebDatum As Date

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Deklarationen
10.12.2008 20:38:41
ChristianM
Hallo,
Die bei Novizen beliebte Falle bezüglich der Deklaration hat Erich ja bereits aufgeführt.
Fehlende Referenzierung: suche zB mal " Range" ohne den entsprechenden führenden Punkt.
Dein Code erscheint mir sehr länglich / umständlich, ich hab mich hier nicht weiter reingefräst...
Grüße
Christian
Anzeige
AW: Deklarationen
10.12.2008 22:06:34
Andreas
Hallo ihr Beiden,
ja auch ich bin diesem Fehler nicht auf die Schliche gekommen. Ich war felsenfest der Meinung, dass ich das irgendwo mal gelesen hatte, dass man so auch Variablen deklarieren kann. Leider war die Quelle anscheinend nicht sehr zuverlässig.
Danke für die Aufklärung :o)
Mfg. Andreas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige