Listenfeld in Excel (VBA)

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
ListBox
Bild

Betrifft: Listenfeld in Excel (VBA)
von: Peter
Geschrieben am: 13.09.2015 16:37:04

Hallo, ich möchte über VBA ein Listenfeld programmieren, aber ich möchte damit folgendes erreichen: Ich habe eine Excel Datei mit mehreren Sheets. Jedes Sheet steht für ein Produkt. Sagen wir mal es sind 8 Produkte. Und in jedem Sheet sind für dieses jeweilige Produkt Kunden (Firmen) gelistet. Aber jeder Kunde (Firma) hat mehrere Einträge, z.b für Firma 1 Kontakt 1 Max Mustermann und dann nochmal Kontakt 2 Moritz Mustermann. Nun kann es sein, dass manche Kunden in mehreren Sheets eingetragen sind, da sie Kunde für mehrere Produkte sind. Ich möchte nun in einem extra Sheet innerhalb dieser Datei ein Listenfeld programmieren, in dessen Liste alle Kunden aller Sheets alphabetisch und nur einmal vorkommen. Und wenn ich dann auf einen Kunden klicke, sollen Kontakte dieser Firma angezeigt werden, und für welche Produkte diese jeweilig zuständig sind. Kann mir jemand helfen? Wäre super dankbar

Bild

Betrifft: AW: Listenfeld in Excel (VBA)
von: Nepumuk
Geschrieben am: 13.09.2015 18:07:04
Hallo,
lade bitte eine Mustermappe hoch.
Gruß
Nepumuk

Bild

Betrifft: AW: Listenfeld in Excel (VBA)
von: Peter
Geschrieben am: 13.09.2015 18:20:07
sorry, aber habe leider keinen Ansatz

Bild

Betrifft: AW: Listenfeld in Excel (VBA)
von: Nepumuk
Geschrieben am: 13.09.2015 18:22:40
Hallo,
soll ich mir die Positionen der Namen in den Tabellen aus den Fingern saugen?
Gruß
Nepumuk

Bild

Betrifft: Tolle Antwort.........oT
von: robert
Geschrieben am: 13.09.2015 18:23:12


Bild

Betrifft: AW: Tolle Antwort.........oT
von: Peter
Geschrieben am: 13.09.2015 22:32:19
Ich erwarte nicht, dass mir hier ein kompletter Code vorgesetzt wird. Es wäre nur hilfreich, vielleicht in kurzen Worten eine Herangehensweise zu schildern, da ich kaum Erfahrung mit VBA habe.

Bild

Betrifft: AW: Tolle Antwort.........oT
von: Daniel
Geschrieben am: 13.09.2015 22:59:00
Hi
wenn du keine Erfahrung mit VBA hast dann ist es oft einfacher, den kompletten Code zu erstellen als jeden Schritt aufwendig zu erklären.
dann kannst du dir nämlich den Code in ruhe anschauen, zu den Unbekannten Befehlen in der Hilfe nachlesen und den Code im Einzelstep durchtesten um zu schauen was passiert.
Dazu brauchst du aber einen lauffähigen Code und den können wir nur erstellen, wenn wir eine passende Beispieldatei von dir haben.
Bei Excel-Gut kannst du dir auch überlegen, wie du das Problem selber ohne VBA nur mit Excelfunktionen am besten lösen würdest. Dann ist es oft recht einfach, den passenden Code dazu mit Hilfe des Recorders zu erstellen (beachte "mit Hilfe des Recorders" und nicht "vom Recorder")
Prinzipell würde ich so vorgehen:
1. in einer Schleife über die Produktblätter gehten und aus den Produktblättern die Spalte mit den Kunden und den Kontakten in das zusammenfassungsblatt kopieren. hierbei schriebst du auch gleich den Blattnamen in eine Spalte hinter die eingefügten Werte
2. wenn du alle Blätter kopiert hast, sortierst du die Liste nach den Kunden
3. jetzt aggregierst du die Kontakte und die Produkte per Formel in einer Hilfsspalte auf, so dass immer beim ersten Eintrag des Kunden alle Kontakte und alle Produkte in jeweils einer Zelle stehen.
dazu nimmst du folgende Formel (Spalte A ist Kunde, Spalte B ist kontakt, Spalte C ist Produkt, Zeile 1 ist überschrift, daten ab ZEile 2
dann folgende Formel in Zelle D2:
=Wenn($A2<>$A3;B2;Wenn(IstZahl(Finden(B2;D3));D3;B2&", "&D3))
für die Produkte in C dann analog in E
diese Formeln bis zum Tabellenende eintragen.
4. Formeln in Spalte D und E kopieren und als Wert eintragen
5. auf die ganze Tabelle die Funktion DATEN - DATENTOOLS - DUPLIAKTE ENTFERNEN anwenden, mit den Kunden als Kriterium
wie gesagt, führe das erstmal von Hand aus, um zu testen ob das das gewünschste Ergebnis liefert.
versuche dann diese Abfolge der Befehle als Makro nachzuprogrammieren, der Recorder kann dir dabei teilweise helfen.
Gruss Daniel

Bild

Betrifft: AW: Tolle Antwort.........oT
von: Peter
Geschrieben am: 14.09.2015 12:51:39
Danke für die Hilfe.
Ich habe genau genommen mehrere Spalten.
Also Spalte A für den Alias, Spalte B für den Vornamen, Spalte C für den Nachnamen, Spalte D für den Firmennamen, Spalte E für einen BBID Wert der aber immer passend zum Kontakt ist, also jeder Kontakt hat seinen BBID Wert. Spalte F ware dann die Spalte, in der das Produkt vorkommt. Kann ich diese "=Wenn($A2<>$A3;B2;Wenn(IstZahl(Finden(B2;D3));D3;B2&", "&D3))" Formel auch auf dieses Problem geändert anwenden (also quasi anpassen)? Aber wie erhalte ich am Ende das Listenfeld mit der gewünschten Funktionsweise?

Bild

Betrifft: AW: Tolle Antwort.........oT
von: Daniel
Geschrieben am: 14.09.2015 19:21:16
Hi
so ganz verstehe ich deine erweiterter Problembeschreibung jetzt nicht. Du wolltest ja nur einen Fingerzeig, wie man sowas lösen könnte und keine fertige Lösung.
das Listenfeld mit der gewünschen Funktion wird mit der Formel in Schritt 3 erzeugt.
In der obersten Zelle zu jedem Eintrag stehen dann die gesammelten Werte (ohne Duplikate) in einer Zelle drin, so dass du dir nur diese Zelle anschauen musst, um zu einem Kunden alle Kontaktpartern oder alle Produkte sehen willst.
Gruss Daniel

Bild

Betrifft: AW: Listenfeld in Excel (VBA)
von: Peter (hpo)
Geschrieben am: 14.09.2015 10:42:38
Hallo Peter
So in etwa habe ich das Problem gelöst.
1. Tabellenblatt - alle Kunden
2. Tabellenblatt - alle Produkte
3. Tabellenblatt - Zuordnung Kd zu Produkt
4. Tabellenblatt - gefunden Produkte pro Kunde wird durch VBA ausgefüllt.
Vieleicht kannst Du damit was anfangen.
https://www.herber.de/bbs/user/100158.xlsm
Viele Grüße
Peter (hpo)

Bild

Betrifft: AW: Listenfeld in Excel (VBA)
von: Peter
Geschrieben am: 14.09.2015 15:49:21
Hallo,
deine Listenfeld finde ich gut umgesetzt. Das Problem ist nur dass ich sehr viele Kontakte habe. Also es kann sein, dass eine Firma z.B 40 Kontakte hat. Und jeder dieser Kontakte ist theoretisch für mehrere Produkte zuständig. Das wird dann sehr schwer mit dieser Art von Fenster dies zu präsentieren. Aber das Design gefällt mir, würde das auch gerne so in der Art haben.

Bild

Betrifft: AW: Listenfeld in Excel (VBA)
von: Peter (hpo)
Geschrieben am: 15.09.2015 07:46:24
Hallo Peter
Dies war natürlich nur eine Bsp. Mappe, die ich mal so eben schnell gemacht habe, da ich Deine Anwendung nicht kenne.
Selbstverständlich kannst Du pro Kunde xbelibige Kontakte einfügen und diesen auch den entsprechenden Produkte zuordnen.
Um hier eine passende Anwendung zu erstellen, wird eine Mustermappe von Dir benötig. Woraus erkennbar ist,der Aufbau und die Struktur der Mappe.
Viele Grüße
Peter (hpo)

Bild

Betrifft: AW: Listenfeld in Excel (VBA)
von: Peter
Geschrieben am: 15.09.2015 09:07:32
Alles klar ich werde mal eine Mustermappe anfertigen, danke dir für die Info.

Bild

Betrifft: AW: Listenfeld in Excel (VBA)
von: Peter
Geschrieben am: 15.09.2015 10:31:20
Ich habe hiermal eine sehr vereinfachte Mustermappe erstellt, aber die Struktur ist im Grunde dieselbe.
Also habe jedem Kunden einen Beispielnamen gegeben mit einer Nummer am Ende, um diese unterscheiden zu können. Diese sind gemischt in den jeweiligen Produkten zu finden.
https://www.herber.de/bbs/user/100178.xlsx

Bild

Betrifft: AW: Listenfeld in Excel (VBA)
von: Peter (hpo)
Geschrieben am: 16.09.2015 10:45:34
Hallo Peter
Hier mal ein Beispiel wie es sein könnte.
Ist natürlich sehr übersichtlich gehalten.
In der ersten Listbox werden die Kunden(Firm)angezeigt.
In der zweiten Listbox werden die Kontakte(Alias) des Kunden angezeigt.
In der dritten Listbox werden die Produkte für den Kunden mit den zuständigen Kontakten angezeigt.
Ich hoffe Du kannst damit was anfangen.
https://www.herber.de/bbs/user/100212.xlsm
Viele Grüße
Peter (hpo)

Bild

Betrifft: AW: Listenfeld in Excel (VBA)
von: Peter
Geschrieben am: 16.09.2015 21:52:04
Hi, das gefällt mir, vielen Dank. Nur eine Frage: Wenn die Anzahl der Firmen und Kontakten steigt, sodass man in der Listbox nicht mehr mit einem Blick alle sehen kann, ist es dann möglich runter zu scrollen um alle in der Listbox zu erreichen?
Viele Grüße, Peter

Bild

Betrifft: AW: Listenfeld in Excel (VBA)
von: Peter (hpo)
Geschrieben am: 17.09.2015 07:03:45
Hallo Peter
Sobald mehr einträge in der Listbox sind wird ein scrollbalken eingefügt und Du kannst dann runter scrollen.
Viele Grüße
Peter (hpo)

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Listenfeld in Excel (VBA)"