Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1832to1836
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

ListBox füllen
23.05.2021 08:50:39
Daniel
Guten Morgen
Es sollte mir in der ListBox2 die Zeilen ausgeben, wo sich in Spalte "F" der Text "Dabei" oder eine Leere Zelle befindet. Doch mache ich irgendwo einen Fehler.
Finde ihn aber nicht raus!
Habe mal eine Datei hochgeladen. Vielleicht kann mir jemand behilflich sein?
Wünsche einen schönen Sonntag.
Gruss aus der Schweiz. Daniel
https://www.herber.de/bbs/user/146325.xlsm

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

Betreff
Datum
Anwender
Anzeige
AW: ListBox füllen
23.05.2021 09:49:09
ralf_b

For Each rngBereich In ws.Range("A2:A" & rngLetzte)
'For Each rngLager In ws.Range("F2:F" & LetzteLager)  ' unnötig
If rngBereich.Offset(, 5).Value = "" Or rngBereich.Offset(, 5).Value = "Dabei" Then 'deine Bedingung
If Application.CountA(rngBereich.Resize(, 6)) > 0 Then    'zusätzlich ganz leere Zeile auslassen
.AddItem rngBereich.Text
.List(.ListCount - 1, 1) = rngBereich.Offset(, 1).Text
.List(.ListCount - 1, 2) = rngBereich.Offset(, 2).Text
.List(.ListCount - 1, 3) = rngBereich.Offset(, 3).Text
.List(.ListCount - 1, 4) = rngBereich.Address
End If
End If
' Next rngLager 'unnötig
Next rngBereich

Anzeige
AW: ListBox füllen
23.05.2021 09:49:53
hary
Moin
Versuch es mal so.

With ListBox2
.Clear
.ColumnCount = 5
.ColumnWidths = "180;180;100;10;0"            'Breite der Spalte
.Font.Size = 12
.ColumnHeads = True             'nach einstellen der Überschriften wieder löschen
For Each rngLager In ws.Range("F2:F" & LetzteLager)
If ws.Cells(rngLager.Row, 1)  "" And (rngLager = "Dabei" Or rngLager = "") Then'--SpalteA belegt und SpalteF Dabei oder leer
.AddItem ws.Cells(rngLager.Row, 1)
.List(.ListCount - 1, 1) = rngLager.Offset(, -4).Text
.List(.ListCount - 1, 2) = rngLager.Offset(, -3).Text
.List(.ListCount - 1, 3) = rngLager.Offset(, -2).Text
.List(.ListCount - 1, 4) = rngLager.Row '-- Row = Zeile
End If
Next rngLager
End With
gruss hary
Anzeige
AW: ListBox füllen
23.05.2021 10:07:03
Beverly
Hi Daniel,
du kannst die 3 ListBoxen in 1 Schleife füllen:

Private Sub UserForm_Initialize()
Dim rngBereich As Range
Dim rngLetzte As Long
Dim LetzteLager As Long
Dim ws As Worksheet
Set ws = Worksheets(1)
rngLetzte = ws.Cells(Rows.Count, 1).End(xlUp).Row
With ListBox1
.Clear
.ColumnCount = 5
.ColumnWidths = "180;180;100;10;0"            'Breite der Spalte
.Font.Size = 12
End With
With ListBox2
.Clear
.ColumnCount = 5
.ColumnWidths = "180;180;100;10;0"            'Breite der Spalte
.Font.Size = 12
End With
With ListBox3
.Clear
.ColumnCount = 5
.ColumnWidths = "180;180;100;10;0"            'Breite der Spalte
.Font.Size = 12
End With
For Each rngBereich In ws.Range("A2:A" & rngLetzte)
If rngBereich  "" Then
If rngBereich.Font.ColorIndex = 1 Then
ListBox1.AddItem rngBereich.Text
ListBox1.List(ListBox1.ListCount - 1, 1) = rngBereich.Offset(, 1).Text
ListBox1.List(ListBox1.ListCount - 1, 2) = rngBereich.Offset(, 2).Text
ListBox1.List(ListBox1.ListCount - 1, 3) = rngBereich.Offset(, 3).Text
ListBox1.List(ListBox1.ListCount - 1, 4) = rngBereich.Address
End If
If rngBereich.Offset(, 5) = "Dabei" Or rngBereich.Offset(, 5) = "" Then
ListBox2.AddItem rngBereich.Text
ListBox2.List(ListBox2.ListCount - 1, 1) = rngBereich.Offset(, 1).Text
ListBox2.List(ListBox2.ListCount - 1, 2) = rngBereich.Offset(, 2).Text
ListBox2.List(ListBox2.ListCount - 1, 3) = rngBereich.Offset(, 3).Text
ListBox2.List(ListBox2.ListCount - 1, 4) = rngBereich.Address
End If
If rngBereich.Font.ColorIndex = 3 Then
ListBox3.AddItem rngBereich.Text
ListBox3.List(ListBox3.ListCount - 1, 1) = rngBereich.Offset(, 1).Text
ListBox3.List(ListBox3.ListCount - 1, 2) = rngBereich.Offset(, 2).Text
ListBox3.List(ListBox3.ListCount - 1, 3) = rngBereich.Offset(, 3).Text
ListBox3.List(ListBox3.ListCount - 1, 4) = rngBereich.Address
End If
End If
Next rngBereich
End Sub

GrußformelBeverly's Excel - Inn
Anzeige
AW: ListBox füllen
23.05.2021 13:02:42
Herbert_Grom
Hallo Karin,
dein Code ist perfekt. Aber was hältst du davon, dass du anstatt 3 x die selbe Prozedur zu fahren, das mit einer For...Next-Schleife absolvierst, nachdem ja die Parameter für die 3 Boxen identisch sind?
So z. B.:

For a = 1 To 3
With Controls("ListBox" & a)
.Clear
.ColumnCount = 5
.ColumnWidths = "180;180;100;10;0"            'Breite der Spalte
.Font.Size = 12
End With
Next a
Das ändert natürlich nix am Ergebnis, ist aber ein klein wenig eleganter, meine ich. Was meinst du?
Servus
AW: ListBox füllen
23.05.2021 14:23:33
Beverly
Hi Herbert,
gewiss kann man das auch so lösen, das verkürzt den Code weiter. Noch einfacher wäre es allerdings (aus meiner Sicht), wenn man alle 3 Eigenschaften jeder der 3 ListBoxen einmalig direkt unter den Eigenschaften einträgt, denn sie ändern sich im Verlauf ja nicht. Dann spart man diesen Code im Initialize-Ereignis ganz und benötigt nur "ListBox.Clear" für jede ListBox. Aber das ist sicher Ansichtssache.
Wenn wir schon mal bei Verbesserungen sind: die Zeile Dim LetzteLager As Long aus dem Ursprungscode kann noch gelöscht werden, da die Variable LetzeLager nicht mehr verwendet wird.
Und noch ein Hinweis an den Fragesteller: die Zeile .ColumnHeads = True habe ich bewusst weggelassen, weil Spaltenüberschriften nicht verwendet werden können, wenn man die Daten mittels AddItem selektiv zuweist. Da solltest du Labels oberhalb der ListBoxen positionieren, wenn du Überschriften brauchst.

GrußformelBeverly's Excel - Inn
Anzeige
AW: ListBox füllen
23.05.2021 17:09:36
Herbert_Grom
Hallo Karin,
auch da hast du natürlich recht. Wenn solche Eigenschaften nicht mehr verändert werden müssen, kann man sie ja gleich in die selbigen schreiben!
Servus nach Sachsen
AW: ListBox füllen
23.05.2021 16:08:35
Daniel
Hallo Karin
Danke für die Hinweise. Dies wegen den Überschriften habe ich so gelöst, dass ich in etwa sehe, wo ich dann die Labels hinsetzen muss für die Überschriften.
Da ich Neuling bin, muss ich die Sache langsam angehen und mache immer Schritt für Schritt. Danach versuche ich auch, die Dinge etwas kürzer u schreiben.
Nun zum Code: Leider macht dieser noch nicht genau was er sollte. Bei mir schreibt es in der ListBox2 immer noch alle Zeilen rein. Dort sollten "nur" die Zeilen stehen, wo in Spalte vier nichts steht oder das Wort "Dabei"!
Mit einigen Kleinigkeiten abändern, würde der Code von hary machen wie ich es mir vorstelle!
Oder mache ich was falsch?
Gruss Daniel
Anzeige
AW: ListBox füllen
23.05.2021 16:22:13
Beverly
Hi Daniel,
du meinst sicher, dass Spalte

6
(nicht 4!!) leer ist oder "Dabei" drin steht? Deine Mappe ist bekanntlich wie folgt aufgebaut:

Tabelle1
 ABCDEF
1VornameNameMarkeTypKennzeichenLagerort
2DanielEberhardVWGolfBE 324127 
3NathiKohlerMazda2Be 1405A
4      
5MarkusLiebiVolvoXC-90BE 0166Dabei
Schriftart wird in dieser Tabelle nicht dargestellt

Füllfarben und Muster  
Zelle Rot Grün Blau Color Muster Farbe
F2, F5 255255065535   
Zellen mit Füllfarbe automatisch werden nicht dargestellt

Schriftformate  
Zelle Rot Grün Blau Color Stil Unterstreichung Effekte Durchgestrichen Schriftart
A1:E4, F1:F5            Calibri 
A5:E5 255 255        Calibri 
Zellen mit Schriftformatierung automatisch werden nicht dargestellt
http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://Hajo-Excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 25.20 einschl. 64 Bit


Die Zellen, die deinen genannten Bedingungen entsprechen, habe ich mal Gelb formatiert. Und genau diese beiden Zeilen werden in ListBox2 eingetragen - der Code macht also genau das was du verlangst.
Userbild

GrußformelBeverly's Excel - Inn
Anzeige
AW: ListBox füllen
23.05.2021 20:04:12
Daniel
Hallo Karin
Sorry mein Fehler! Da ich eine Beispiel Datei hatte, musste ich eine Zahlen anpassen. Jetzt funktioniert es wunderbar! Vielen Dank.
Gruss und einen schönen Abend.
Gruss Daniel
AW: ListBox füllen
23.05.2021 11:11:19
Daniel
Guten Tag
Puh, so viele Vorschläge. Vielen Dank Euch allen. Werde mal schauen, welcher Vorschlag mir am besten gefällt und den Code auch noch verstehe!
Vielen Dank, Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige