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

Comboboxen abhängig voneinander füllen

Comboboxen abhängig voneinander füllen
17.09.2022 16:41:00
Andy
Hallöchen,
ich hätte eine Frage an Euch.
5 Comboboxen werden mit dem Laufwerksinhalt eines Verzeichnisses befüllt.
Hierzu verwende ich derzeit nachfolgenden Code:

For i = 1 To 5
Me.Controls("Combobox" & i).Clear
If sPfad  "" Then
sdatei = Dir(sPfad & "*.*")
Do While sdatei  ""
Me.Controls("ComboBox" & i).AddItem sdatei
sdatei = Dir
Loop
End If
Next i
Jetzt würde ich gerne erreichen, dass die ComboBoxen abhängig voneiner gefüllt werden. Soll bedeuten: Wenn ich n CB1 zb ein File auswähle, soll es in den anderen CBs nicht mehr auftauchen. Wenn ich es wieder lösche, soll es wieder vorhanden sein. Ich speichere später die CBs und navigiere mit einer Listbox, daher werden die Einträge wieder geladen, die zuletzt eingetragen waren.
Ich möchte dadurch erreichen, dass eine Datei aus diesem Ordner nicht doppelt in die CBs gelangt.
Kann man sowas bewerkstelligen ? Und wenn ja .... wie zum Teufel :)
Dank Euch

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Comboboxen abhängig voneinander füllen
17.09.2022 17:08:41
Daniel
Hi
Schreibe zuerst im Initialize-Event die die Dateinamen in ein Array:

           sdatei = Dir(sPfad & "*.*")
Do While sdatei  ""
Txt = Txt & "|"   & sdatei
sdatei = Dir
Loop
arrDatei = split(mid(txt, 2), "|")
arrDatei sollte Modulweit gültig sein (Deklaration oberhalb der Makros), dann kannst du es in allen anderen Makros der Usergorm verwenden, ohne es erneut füllen zu müssen.
Die Befüllung der Combobxen geht dann einfach mit

Combobox1.List = arrDateien
danach nimmst du die Werte wieder raus, wenn sie schon in den anderen Comboboxen ausgewählt wurden.

For i = Combobox1.ListCount - 1 to 0 step -1
If Combobox1.List(i) = Combobox2.value or Combobox1.List(i) = Combobox3.value or ... Then
Combobox1.RemoveItem i
End If
Next
Dieser Code muss dann für alle Combobxen ausgeführt werden, wenn du eine änderst, denn bei Auswahl einer anderen Datei in einer Combobox musst du in den anderen Combobxen die ursprünglich ausgewählte hinzufügen und die neu ausgewählte wegnehmen.
Gruß Daniel
Anzeige
AW: Comboboxen abhängig voneinander füllen
17.09.2022 18:20:12
Andy
Danke für Deine Mühe. Aber sehe ich das richtig, wenn zwischendrinnen etwas in dem Ordner hinzugefügt wird, ist das VErzeichnis nicht mehr aktuell ... Dazu müsste ich dann das Array neu befüllen?
AW: Comboboxen abhängig voneinander füllen
17.09.2022 19:12:46
Andy
Ich glaube das übersteigt meinen Horizont. Mit diesen Arrays blick ich nicht durch. . Vl kannst du mir das noch mal bisschen detailierter schildern?
AW: Comboboxen abhängig voneinander füllen
18.09.2022 04:17:07
Daniel
Äm ja.
Dann programmiert man das befüllen des Arrays als eigenständiges Makro, das man jederzeit bei bedarf aufrufen kann.
Gruß Daniel
AW: Comboboxen abhängig voneinander füllen
18.09.2022 08:49:32
Andy
Kannst du mir da vielleicht nochmal kurz Stellungshilfe geben? Wie dimensioniere ich das Array und wo rufe ich es auf ?
Anzeige
AW: Comboboxen abhängig voneinander füllen
19.09.2022 11:29:04
Daniel
Hi
du dimensionierst das Array oberhalb der Makros, direkt unter Option Explict.

Option Explicit
Dim arrDateien as Variant
so deklarierte Variablen sind in allen Makros dieses Moduls bekannt (hier der Userform) und können von diesesn verwendet werden.
Dabei behalten sie ihren Inhalt, dh du kannst solche Variablen für den Austausch zwischen zwei Makros verwenden.
Dh wenn du dieses Array im Initialize-Event befüllt hast, kannst du es im Change-Event einer Combobox verwenden und musst die Aktion, die zum Befüllen erforderlich ist, nicht erneut ausführen.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige