Anzeige
Archiv - Navigation
1444to1448
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
Listenfeld in Excel (VBA)
13.09.2015 16:37:04
Peter
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

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listenfeld in Excel (VBA)
13.09.2015 18:07:04
Nepumuk
Hallo,
lade bitte eine Mustermappe hoch.
Gruß
Nepumuk

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

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

Tolle Antwort.........oT
13.09.2015 18:23:12
robert

AW: Tolle Antwort.........oT
13.09.2015 22:32:19
Peter
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.

AW: Tolle Antwort.........oT
13.09.2015 22:59:00
Daniel
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

Anzeige
AW: Tolle Antwort.........oT
14.09.2015 12:51:39
Peter
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?

Anzeige
AW: Tolle Antwort.........oT
14.09.2015 19:21:16
Daniel
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

AW: Listenfeld in Excel (VBA)
14.09.2015 10:42:38
Peter
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)

Anzeige
AW: Listenfeld in Excel (VBA)
14.09.2015 15:49:21
Peter
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.

AW: Listenfeld in Excel (VBA)
15.09.2015 07:46:24
Peter
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)

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

AW: Listenfeld in Excel (VBA)
15.09.2015 10:31:20
Peter
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

AW: Listenfeld in Excel (VBA)
16.09.2015 10:45:34
Peter
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)

Anzeige
AW: Listenfeld in Excel (VBA)
16.09.2015 21:52:04
Peter
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

AW: Listenfeld in Excel (VBA)
17.09.2015 07:03:45
Peter
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)

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige