Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1696to1700
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 Leerzeichen

ListBox füllen ohne Leerzeichen
16.06.2019 23:41:21
Dirk
Hallo liebe Herber Excel Fachleute,
habe ein kleines Problem. Ich habe eine Datenbank und habe hierzu eine UserForm erstellt.
In Zeile F stehen die Artikel, die werden in eine ListBox eingelesen. Wenn ich ein Artikel anklicken, wird mir in meiner UserForm in TextBox die dazu passenden Wert (die in weiteren Spalten stehen) angezeigt.
Meine ListBox zeigt mir von Zeile 4 absteigende die Artikel an.
Ich möchte jetzt aber gerne in der ListBox die Artikel sortiert haben und die leeren Zellen sollten auch nicht angezeigt werden. Vielleicht kann mir von euch jemand helfen, das wäre klasse. Habe es leider nicht selber hinbekommen.
Hier noch meine kleines Programm:
Public Sub FuellenListBox1()
Dim Artikel As String
For i = O To 340
Artikel = Sheets("Fl1").Cells(i + 4, 6)
lstBox1.AddItem Artikel
lstBox1.List(i, 1) = Cells(i + 4, 6).Row
Next i
End Sub

Private Sub lstBox1_Click()
Dim Zeil As Long
TextArtikelnummer.Text = ""
TextBeschreibung.Text = ""
usw.
Zeil = lstBox1.Column(1)
TextArtikelnummer.Text = Sheets("Fl1").Cells(Zeil, 6)
TextBeschreibung.Text = Sheets("Fl1").Cells(Zeil, 7)
usw.
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: ListBox füllen ohne Leerzeichen
16.06.2019 23:51:38
Dirk
Sorry, meine eigentlich Leerzellen nicht Leerzeichen
AW: ListBox füllen ohne Leerzeichen
17.06.2019 06:37:56
Hajo_Zi

For i = O To 340
If  Sheets("Fl1").Cells(i + 4, 6)"" Then
lstBox1.AddItem Artikel
lstBox1.List(i, 1) = Cells(i + 4, 6).Row
endif
Next i
End if

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: ListBox füllen ohne Leerzeichen
17.06.2019 09:33:57
Dirk
Hallo Hajo,
vielen Dank schon mal für deine schnelle Antwort.
Ich habe deine Form anstelle meiner reinkopiert.
'For i = O To 340
' Artikel = Sheets("Fl1").Cells(i + 4, 6)
' lstBox1.AddItem Artikel
' lstBox1.List(i, 1) = Cells(i + 4, 6).Row
' Next i
For i = O To 340
If Sheets("Fl1").Cells(i + 4, 6) "" Then
lstBox1.AddItem Artikel
lstBox1.List(i, 1) = Cells(i + 4, 6).Row
End If
Next i
da kommt jetzt aber die Fehlermeldung:
Laufzeitfehler: Eigenschaft List konnte nicht gesetzt werden. Indes des Eigenschaftsfeld ungültig
lstBox1.List(i, 1) = Cells(i + 4, 6).Row
Wie kann ich dies beheben?
Danke schon mal für deine Hilfe
Gruß Dirk
Anzeige
AW: ListBox füllen ohne Leerzeichen
17.06.2019 09:40:00
Hajo_Zi
der Fehler ist nicht in meinem Teil.
Dein Code lief vorher.Keine Ahnung was jetzt falsch läuft.
Man könnte vermuten die Zuweisung ist falsch.
stBox1.List(i, 1).additem i + 4
Gruß Hajo
AW: ListBox füllen ohne Leerzeichen
17.06.2019 09:54:02
Nepumuk
Hallo Dirk,
versuch es mal so:
With Worksheets("Fl1")
For i = O To 340
If Not IsEmpty(.Cells(i + 4, 6).Value) Then
lstBox1.AddItem .Cells(i + 4, 6).Text
lstBox1.List(lstBox1.ListCount - 1, 1) = i + 4
End If
Next i
End With

Gruß
Nepumuk
AW: ListBox füllen ohne Leerzeichen
17.06.2019 10:08:56
Dirk
Hallo Hajo, hallo Nepumuk
ich bin gerade unterwegs und nicht an meinem Rechner.
Ich probiere es später mal aus und melde mich dann wieder.
Gruß Dirk
Anzeige
AW: ListBox füllen ohne Leerzeichen
17.06.2019 11:49:29
Werner
Hallo Dirk,
hier mit Sortierung der Listboxeinträge.
Hierzu kopiere ich zunächst die Artikelliste in eine Hilfsspalte (derzeit Spalte JA, die muß natürlich leer sein, ansonsten müsstest du das noch ändern). Die jeweiligen Zeilennummern zu den Einträgen werden in der Hilfsspalte JB ausgegeben.
Anschließend werden die Hilfsspalten JA:JB nach JA aufsteigend sortiert.
Dann werden aus diesen Hilfsspalten die Daten in die Listbox eingelesen.
Frage: Warum hast du das Füllen der Listbox in einem allgemeinen Modul und nich z.B. im Userform_Initialize Ereignis der Userform?
Option Explicit
Private Sub UserForm_Initialize()
Dim loLetzte As Long, i As Long
Application.ScreenUpdating = False
With Worksheets("Fl1")
'letzte belegte Zelle in Spalte F ermitteln
loLetzte = .Cells(.Rows.Count, "F").End(xlUp).Row
'Daten aus Spalte F in Hilfsspalte JA kopieren
.Range(.Cells(4, "F"), .Cells(loLetzte, "F")).Copy .Cells(4, "JA")
'Formel zur Ausgabe der Zeilennummer in Spalte JB eintragen
.Range(.Cells(4, "JB"), .Cells(loLetzte, "JB")).FormulaLocal = "=ZEILE()"
'Formelergebnis in Spalte JB durch den jeweiligen Wert ersetzen
.Range(.Cells(4, "JB"), .Cells(loLetzte, "JB")).Value = _
.Range(.Cells(4, "JB"), .Cells(loLetzte, "JB")).Value
'Hilfsspalten JA:JB aufsteigend sortieren
.Sort.SortFields.Clear
.Sort.SortFields.Add2 Key:=.Cells(4, "JA"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange Range(Cells(4, "JA"), Cells(loLetzte, "JB"))
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
'letzte belegte Zelle in Hilfsspalte JA ermitteln
loLetzte = .Cells(.Rows.Count, "JA").End(xlUp).Row
'Schleife über Hilfsspalte JA von 4 bis letzter beldgter Zelle
For i = 0 To loLetzte - 4
'Listbox mit den Daten aus Spalte JA und JB füllten
ListBox1.AddItem .Cells(i + 4, "JA")
ListBox1.List(ListBox1.ListCount - 1, 1) = .Cells(i + 4, "JB")
Next i
'Hilfsspalten JA:JB leeren
.Columns("JA:JB").ClearContents
End With
End Sub
Gruß Werner
Anzeige
AW: ListBox füllen ohne Leerzeichen
17.06.2019 14:35:06
Dirk
Hallo zusammen,
erst einmal an alle, die mir geantwortet haben, vielen Dank. Ich bin begeistert über die vielen Antworten und über dieses Forum - TOP!
Hajo, den Fehler habe ich bisher noch nicht gefunden. Gestern bin ich daran auch gescheitert, sobald ich eine IF Schleife genommen habe, kam der Fehler
Nepumuk, perfekt. Einfach und genau das, was ich gesucht habe
Werner, ich befülle die ListBox in der UserForm. Trotzdem vielen Dank für deinen ausführlichen Code
Private Sub UserForm_Activate()
FuellenListBox1
End Sub
Boris, Danke für den Hinweis. Komischerweise geht beides O oder 0
Vielen Dank noch mal an alle. Ich habe da noch weitere Ideen, was ich noch ausprobieren will.
Wenn ich dann ein Problem habe, weiß ich ja jetzt, wo ich wieder SUPER HILFE bekomme.
Euch einen schönen Tag
Gruß Dirk
Anzeige
schön...
17.06.2019 14:59:02
Werner
Hallo Dirk,
...nur dachte ich, dass dene Listboxeinträge sortiert sein sollten?
Gruß Werner
AW: schön...
17.06.2019 15:25:43
Dirk
Hallo Werner,
korrekt. Ich sortiere vorab das Arbeitsblatt jetzt mit einem Makro
Ich habe auch eine Sortiermöglichkeit gehabt. Hier wird die ListBox gleich sortiert ohne in eine andere Spalte was zu schreiben. Allerdings habe ich hier nur weitere ListBoxen befüllt. Mit TextBoxen hat das dann nicht so geklappt und meiner Meinung zu kompliziert
Gruß Dirk
Public Sub FuellenListBox1()
Dim liste()
Dim cnt As Integer
cnt = 0
ReDim liste(cnt)
For i = 1 To Sheets("Fl1").Cells(65000, 1).End(xlUp).Row
If Not Sheets("Fl1").Cells(i + 2, 6) = "" Then
Artikel = Sheets("Fl1").Cells(i + 2, 6)
If NotInArtikelBox(Artikel, liste) Then
cnt = cnt + 1
ReDim Preserve liste(cnt)
liste(cnt) = Artikel
End If
End If
Next i
Call BubbleSort(liste)
For i = 1 To cnt
lstBox1.AddItem liste(i)
Next i
End Sub

Private Sub lstBox1_Click()
Dim liste()
Dim cnt As Integer
cnt = 0
'Befüllung der Listenbox Artikelnummer
lstBox01.Clear
ReDim liste(cnt)
WahlArtikel = lstBox1.List(lstBox1.ListIndex)
For i = 1 To Sheets("Fl1").Cells(65000, 1).End(xlUp).Row
Artikelnummer = Sheets("Fl1").Cells(i + 2, 6)
If WahlArtikel = CStr(Sheets("Fl1").Cells(i + 2, 6)) And NotInArtikelnummerBox(Artikelnummer, _
liste) Then
cnt = cnt + 1
ReDim Preserve liste(cnt)
liste(cnt) = Artikelnummer
End If
Next i
Call BubbleSort(liste)
For i = 1 To cnt
lstBox01.AddItem liste(i)
Next i
'usw.
End Sub
Private Function NotInArtikelBox(TestArtikel, liste)
For i = 0 To UBound(liste)
If CStr(TestArtikel) = liste(i) Then
NotInArtikelBox = False
Exit Function
End If
Next
NotInArtikelBox = True
End Function
Private Function NotInArtikelnummerBox(TestArtikelnummer, liste)
For i = 0 To UBound(liste)
If CStr(TestArtikelnummer) = liste(i) Then
NotInArtikelnummerBox = False
Exit Function
End If
Next
NotInArtikelnummerBox = True
End Function

im Modul steht dann:
Sub BubbleSort(ByRef sArray As Variant)
Dim j As Long ' Zähler
Dim i As Long ' noch ein Zähler
Dim vDummy As Variant ' Dummy für Dreiecks-Tausch
For j = UBound(sArray) - 1 To LBound(sArray) Step -1
For i = LBound(sArray) To j
If sArray(i) > sArray(i + 1) Then
vDummy = sArray(i)
sArray(i) = sArray(i + 1)
sArray(i + 1) = vDummy
End If
Next i
Next j
End Sub
Anzeige
O ist nicht gleich 0 (Oder nur Tippfehler?)
17.06.2019 10:39:20
{Boris}
...

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige