Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1484to1488
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

Listbox füllen ohne Leerzellen

Listbox füllen ohne Leerzellen
11.04.2016 10:46:44
Robby

Guten Morgen liebe Herber Excel Community,
in meiner Datei geht es um ein kleines Stundenplan Programm. Soweit geht auch alles, im jetzigen Projektstatus, aber ich kann die Listboxen in der UserForm 6 nur mit Leerzeilen aus der Tabelle "K2" befüllen. Ich habe jetzt schon sehr viel im Netz recherchiert, aber habe nichts gefunden. Könnte mir vielleicht einer von euch Profis mir bei der Lösung helfen?
Vielen lieben Dank schon mal im voraus.
https://www.herber.de/bbs/user/104886.xlsm

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox füllen ohne Leerzellen
11.04.2016 12:53:48
Peter Feustel
Hallo Robby,
das sollte doch so funktionieren:
Private Sub UserForm_Initialize()
For i = 1 To Sheets("K2").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
If Sheets("K2").Cells(1, i).Value <> "" Then
ListBox1.AddItem Sheets("K2").Cells(1, i)
ListBox2.AddItem Sheets("K2").Cells(1, i)
ListBox3.AddItem Sheets("K2").Cells(1, i)
ListBox4.AddItem Sheets("K2").Cells(1, i)
ListBox5.AddItem Sheets("K2").Cells(1, i)
End If
Next i
ListBox1.ListIndex = 0
End Sub

Gruß Peter

AW: Listbox füllen ohne Leerzellen
11.04.2016 13:12:57
ChrisL
Hi Robby
Probier mal...
Private Sub ListBox1_Click()
Call LBfuellen(ListBox1, ListBox6)
End Sub

Private Sub ListBox2_Click()
Call LBfuellen(ListBox2, ListBox7)
End Sub

Private Sub ListBox3_Click()
Call LBfuellen(ListBox3, ListBox8)
End Sub

Private Sub ListBox4_Click()
Call LBfuellen(ListBox4, ListBox9)
End Sub

Private Sub ListBox5_Click()
Call LBfuellen(ListBox5, ListBox10)
End Sub

Private Sub LBfuellen(LB1, LB2)
Dim tempSpalte As Integer
Dim iZeile As Long
LB2.Clear
With Sheets("K2")
tempSpalte = Application.Match(LB1.List(LB1.ListIndex), .Rows(1), 0)
For iZeile = 2 To .Cells(.Rows.Count, tempSpalte).End(xlUp).Row
If .Cells(iZeile, tempSpalte) <> "" Then LB2.AddItem .Cells(iZeile, tempSpalte)
Next iZeile
End With
End Sub

Private Sub UserForm_Initialize()
Dim i As Integer
With Sheets("K2")
For i = 1 To .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
ListBox1.AddItem .Cells(1, i)
ListBox2.AddItem .Cells(1, i)
ListBox3.AddItem .Cells(1, i)
ListBox4.AddItem .Cells(1, i)
ListBox5.AddItem .Cells(1, i)
Next i
ListBox1.ListIndex = 0
Call LBfuellen(ListBox1, ListBox6)
End With
End Sub

Mit solchen Zeilen musst du aufpassen, dass du alles referenzierst:
Sheets("K2").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
Cells.Columns.Count bezieht sich auf das gerade aktive Blatt. Richtig wäre:
Sheets("K2").Cells(1, Sheets("K2").Cells.Columns.Count).End(xlToLeft).Column
cu
Chris

Anzeige
AW: Listbox füllen ohne Leerzellen
11.04.2016 14:16:17
Robby
Vielen lieben Dank. Es hat so wie Du es beschrieben hast, funktioniert ChrisL. DANKE SCHÖN

AW: Listbox füllen ohne Leerzellen
11.04.2016 21:45:53
Robby
Hallo ChrisL,
also wie gesagt dein Vorschlag funktioniert soweit, allerdings habe ich jetzt gesehen das, wenn ich z.B. einen Teilnehmer in der Listbox6 anklicke, dieser nicht ins Tabllenblatt übernommen wird. Kannst du mir da noch einen Tipp geben?
Tabellenblatt "Stundenplan"
Lg Robby

AW: Listbox füllen ohne Leerzellen
11.04.2016 22:12:14
Robby
Und ich nochmal,
gibt es denn in diesem Zuge auch die Möglichkeit einer automatischen Auswahl. Also, das heißt ich wähle in der Listbox1 eine Gruppe aus. Zu jeder Gruppe bzw. Fachbereich wurden Teilnehmer zugeordnet und werden dann in Listbox6 (der darunter) angezeigt. Diese Wiederum sollen dann in die Tabelle "Stundenplan" beim Klick auf den Button "Komplette Auswahl übernehmen" geschrieben werden. Aktuell ist es ja so das ich jeden anklicken muss und dann wird er auch übernommen. Also wenn das wieder funktioniert.
Hat da jemand von euch eine Idee? Ich wäre sehr dankbar dafür.
Lg Robby

Anzeige
AW: Listbox füllen ohne Leerzellen
12.04.2016 08:25:49
ChrisL
Hi Robby
Für deine Anschlussfragen habe ich heute leider keine Zeit. Ich lasse die Frage darum offen.
cu
Chris

AW: Listbox füllen ohne Leerzellen
12.04.2016 12:34:16
ChrisL
Hi Robby
Ich hatte jetzt doch noch kurz Zeit mir die Sache anzuschauen. Hierbei sind einige Unklarheiten aufgetaucht.
Wir haben auf Userform6 insgesamt 5 ListBox (+nochmals 5 für Titel). Im Blatt Stundenplan hast du aber 8 Spalten. Wenn ich nun alles übernehme, dann sind max. 5 Spalten gefüllt. Wofür sind die verbleibenden?
Wenn ich jetzt 5 Spalten übernehme. Anschliessend die Listbox 1-5 ändere und erneut übernehme, sollen dann die bestehenden 5 Spalten überschrieben werden oder sind es dann plötzlich 10 Spalten?
Die Zeiten auf dem Stundenplan können ignoriert werden?
Und dass bei Klick auf ListBox 6-10 nichts passiert ist ja nicht weiter verwunderlich. Es fehlt der Code. Angenommen man macht ein Click-Ereignis für ListBox 6-10, dann braucht es keine "Komplette Auswahl übernehmen" mehr, da ja dann immer sofort aktualisiert wird.
Fazit, das ganze ergibt keinen Sinn oder der Sinn erschliesst sich mir zu mindest nicht.
cu
Chris

Anzeige
AW: Listbox füllen ohne Leerzellen
12.04.2016 15:29:00
Robby
Hi Chris,
und vielen Dank dafür das du nochmal drüber geschaut hast.
Also zum Verständnis meiner Userform6.
Listbox1-5 sollen die Auswahl für die Gruppen sein. Z.B. G 1, G 2, Farbe, usw. Wenn ich dann z.B. in der Listbox1 die Auswahl G 1 mache, sind dieser Auswahl bzw. Gruppe schon Teilnehmer zugeordnet und werden dann in der darunterliegenden Listbox6 angezeigt.
5 UserFormen (also 5 Gruppen) ist in unserem Haus Standard und des auch erstmal so angelegt. Aber es kommt vor das wir aus 5 Gruppen, mal 6 oder gar 7 machen müssen. Dafür werde ich dann weitere Userformen anlegen. Deshalb sind in der Tabelle "Stundenplan" auch 8 Spalten eingerichtet. Befüllt werden aber vorerst die ersten 5.
So zur Übernahme der Daten aus den Listboxen. Listbox1-5 werden oben bei den Farben eingetragen. Die Teilnehmer entsprechend darunter.
Die Zeiten müssen bei uns auf dem Plan stehen, deshalb sollen die Eintragungen auch erst ab Spalte B beginnen. Der Button "Komplett übernehmen" macht deshalb für mich Sinn, da erst der Stundenplan in den UserFormen erstellt werden soll (optisch) zum anschauen und wenn alle Gruppen passen und die Lehrer/ Ausbilder/ Dozenten eintragen mit Fach und Raum, soll alles mit einmal übernommen werden.
Oje ich hoffe das dass jetzt Verständlich ist.
Lg Robby

Anzeige
AW: Listbox füllen ohne Leerzellen
12.04.2016 17:52:24
ChrisL
Hi Robby
Ich versuche es noch einmal.
Mein Verständnis zu Blatt "Stundenplan": Die letzten Spalten können ignoriert werden, ebenso ab Zeile 34. Folglich findet der Übertrag im Bereich B1:F33 statt, Zeile 1 ist dabei der Titel.
Weiter entnehme ich, dass das Userform6 nur der Visualisierung dient. Soweit OK, auch wenn ich persönlich einen Filter auf Blatt Teilnehmer gesetzt hätte. So kannst du Filterkriterien kombinieren. Was ich meine: Wenn du in ListBox1 die Auswahl z.B. Gruppe1 triffst, in ListBox2 z.B. Farbe, dann haben die ListBoxen keinen Zusammenhang. Teilnehmer der Gruppe1 machen nicht zwingend bei der Aktivität Farbe mit.
In den ListBoxen behandelst du Gruppe und Aktivität gleichwertig. Übernehmen wir diese ListBoxen nun in den Stundenplan hast du ein wildes Gemisch aus Gruppen und Aktivitäten (oder nur Gruppen und nur Aktivitäten).
Mag sein, dass dies alles gewollt ist, dann ist auch OK.
Wenn jetzt Userform6 nur zur Visualisierung dient, wozu dann eine Auswahl. Eine Auswahl in ListBox1-5 macht irgendwie Sinn d.h. entscheidet welche Gruppen und/oder Aktivitäten in den Stundenplan übertragen werden sollen. Eine Auswahl bei den Teilnehmern (ListBox6-10) verstehe ich nicht, weil die ja vorbestimmt sind. Was ich mir auch noch vorstellen könnte, die Teilnehmerzahl ist begrenzt und darum triffst du eine Auswahl. In diesem Fall müsste die Auswahl nicht auch gespeichert werden resp. die Teilnehmerliste angepasst?
Und die letzte Frage/Anmerkung. "K2" ist nur ein Hilfsblatt und könnte auch elminiert werden?
cu
Chris

Anzeige
AW: Listbox füllen ohne Leerzellen
12.04.2016 22:18:27
Robby
Hallo Chris,
erstmal bin ich echt begeistert, dass du dich diesem Projekt so widmest. Zum Hintergrund nochmal. Das ist ein Stundenplan für einen Tag. Der wird also für jeden Tag neu erstellt. Mo und Di haben wir allgemeinbildenden Unterricht und Mi bis Fr, Fachunterricht. Einige Teilnehmer sind also zum Beispiel Mo und Di immer in Gruppe 2. Aber Mi sind wiederum diese TN in unterschiedlichen Fachbereichen. Und wiederum Do und Fr woanders. Aus diesem Grund habe ich die Tabelle K2 erstellt und die UserForm2. In dieser werden alle TN einmal angelegt und in die Tabelle geschrieben. Jetzt soll man einen Stundenplan für z.B. Montag erstellen. Also Gruppe 1 - 5. Hier sind jetzt die TN zugeordnet und werden in den Listboxen6-10 angezeigt. Warum? Jetzt wird es tricky. Denn und das muss zwingend im Stundenplan Programm funktionieren. Manche TN sind Krank oder im Praktikum und sollen dann rot markiert werden und deshalb auch die Möglichkeit des einzelnen anklickens. Leider habe ich da noch keine konkrete Lösung wie ich das umsetze, aber wie gesagt ohne diese Option wird man das Excel Programm nicht nutzen. Der Tabellenbereich unterhalb wird auch genutzt. Hier werden die Stunden mit Lehrer, Fach und Raum eingetragen. Das habe ich auch schon soweit. Da ich aber gerade vom Handy schreibe kann ich erst morgen hier die aktuelle Datei zur Verfügung stellen. Aber wenn du einen anderen Ansatz siehst, lass es mich wissen und nun hoffe ich es gut erklärt zu haben. Lg Robby

Anzeige
AW: Listbox füllen ohne Leerzellen
13.04.2016 14:45:20
ChrisL
Hi Robby
Ich muss ja nicht alles verstehen...
Mit nachstehenden Codezeilen verabschiede ich mich dann auch, da ich irgendwann auch meine Brötchen verdienen muss.
Private Sub CommandButton5_Click()
Worksheets("Stundenplan").Range("B1:F33").ClearContents
Call AllesUebernehmen(ListBox1)
Call AllesUebernehmen(ListBox2)
Call AllesUebernehmen(ListBox3)
Call AllesUebernehmen(ListBox4)
Call AllesUebernehmen(ListBox5)
End Sub

Private Sub AllesUebernehmen(LB)
If LB.ListIndex > -1 Then
Dim WS1 As Worksheet, WS2 As Worksheet
Dim iZeile As Long, iCounter As Long
Dim tempSpalte1 As Integer, tempSpalte2 As Integer
Set WS1 = Worksheets("K2")
Set WS2 = Worksheets("Stundenplan")
tempSpalte1 = Application.Match(LB.List(LB.ListIndex), WS1.Rows(1), 0)
tempSpalte2 = WS2.Range("I1").End(xlToLeft).Column + 1
WS2.Cells(1, tempSpalte2) = LB.List(LB.ListIndex)
For iZeile = 2 To WS1.Cells(WS1.Rows.Count, tempSpalte1).End(xlUp).Row
If WS1.Cells(iZeile, tempSpalte1) <> "" Then
iCounter = iCounter + 1
WS2.Cells(iCounter + 1, tempSpalte2) = WS1.Cells(iZeile, tempSpalte1)
End If
Next iZeile
End If
End Sub
Private Sub ListBox6_Change()
Call AuswahlUebernehmen(ListBox1, ListBox6)
End Sub

Private Sub ListBox7_Change()
Call AuswahlUebernehmen(ListBox2, ListBox7)
End Sub

Private Sub ListBox8_Change()
Call AuswahlUebernehmen(ListBox3, ListBox8)
End Sub

Private Sub ListBox9_Change()
Call AuswahlUebernehmen(ListBox4, ListBox9)
End Sub

Private Sub ListBox10_Change()
Call AuswahlUebernehmen(ListBox5, ListBox10)
End Sub

Private Sub AuswahlUebernehmen(LB1, LB2)
Dim tempSpalte As Integer, i As Long
With Worksheets("Stundenplan")
If WorksheetFunction.CountIf(.Rows(1), LB1.List(LB1.ListIndex)) = 0 Then
tempSpalte = .Range("I1").End(xlToLeft).Column + 1
.Cells(1, tempSpalte) = LB1.List(LB1.ListIndex)
Else
tempSpalte = Application.Match(LB1.List(LB1.ListIndex), .Rows(1), 0)
End If
.Range(.Cells(2, tempSpalte), .Cells(33, tempSpalte)).ClearContents
For i = 0 To LB2.ListCount - 1
If LB2.Selected(i) = True Then _
.Cells(33, tempSpalte).End(xlUp).Offset(1, 0) = LB2.List(i)
Next i
End With
End Sub

cu
Chris

Anzeige
AW: Listbox füllen ohne Leerzellen
14.04.2016 21:30:59
Robby
Hallo Chris,
und vielen lieben Dank für deine Mühen. Ich komme erst morgen dazu diesen Code einzufügen und dir zu sagen ob alles klappt.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige