Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1684to1688
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 sortieren

Listbox sortieren
16.04.2019 15:36:06
Andre
Hallo,
ich fülle eine 10-spaltige Listbox nach Abfrage einer TextBox mit Daten aus einem Tabellenblatt.
Nun möchte ich noch, dass jede Zeile in der Listbox automatisch von 1 ansteigend nummeriert wird.
Kann mir da jemand mit einer Codezeile weiterhelfen?
Mein Code sieht so aus:

Private Sub TextBox_Scan_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim c As Range
Dim rngBereich As Range
Dim lngAnzahl As Long
Dim strFirst As String
With Sheets("BESTAND")
Set rngBereich = .Columns("A:A")
Set c = rngBereich.Find(TextBox_Scan, LookIn:=xlValues, lookat:=xlPart)
If Not c Is Nothing Then
If Not c = "" Then
strFirst = c.Address
Do
ListBox1.AddItem .Cells(c.Row, 1)
lngAnzahl = ListBox1.ListCount
ListBox1.List(lngAnzahl - 1, 1) = .Cells(c.Row, 3)
ListBox1.List(lngAnzahl - 1, 2) = .Cells(c.Row, 4)
ListBox1.List(lngAnzahl - 1, 3) = .Cells(c.Row, 5)
ListBox1.List(lngAnzahl - 1, 4) = .Cells(c.Row, 8)
ListBox1.List(lngAnzahl - 1, 5) = .Cells(c.Row, 9)
ListBox1.List(lngAnzahl - 1, 6) = ComboBox_Kunde
ListBox1.List(lngAnzahl - 1, 7) = TextBox_Auftrag
ListBox1.List(lngAnzahl - 1, 8) = .Cells(c.Row, 6)
ListBox1.List(lngAnzahl - 1, 9) = .Cells(c.Row, 7)
Set c = rngBereich.FindNext(c)
Loop While Not c Is Nothing And c.Address  strFirst
End If
Else
MsgBox "Palette nicht gefunden!", 48
End If
End With
With TextBox_Scan
.Value = ""
End With
If Raus = 0 Then
Cancel = True
Raus = 1
End If
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Listbox sortieren
16.04.2019 15:57:23
Daniel
Hi
theoretisch müsstest du dafür die Listbox um eine Spalte erweitern und dort die Zählnummer eintragen.
Listbox1.List(lngAnzahl - 1, 10) = lngAnzahl
scheitert aber vermutlich daran, dass die Befüllung per AddItem nur bis maximal 10 Spalten funktioniert, dh du müsstest dein Makro zum Befüllen komplett umschreiben.
bespielsweise kannst du dir ein Array erstellen, dieses auf die passende Größe dimensionieren, dort die Werte einschreiben und am schluss das Array als ganzes der Listbox1.List übergeben.
die Anzahl der benötigten Zeilen kannst du ja mit worksheetfunction.CountIf bestimmen:
redim arrList(1 to Worksheetfunction.countif(rngbereich, "*" & TextBox_Scan & "*"), 1 to 11)

(Achtung, Array ist hier 1 basiert, bitte bei den Indizes beachen)
das finden der Werte und die dazu gehörige DO-Schleife wie gehabt, nur musst du die Werte jetzt erstmal ins Array schreiben, und am Ende der Schleife dann das Array in die Listbox:
DO
lngAnzahl = lngAnzahl + 1
arrList(lngAnzahl, 1) = .Cells(c.Row, 1)
arrList(lngAnzahl, 2) = .Cells(c.Row, 3)
usw..
arrList(lnganzahl, 11) = lngAnzahl
Loop
Listbox1.List = arrList
der Rest dann wie gehabt.
Gruß Daniel
Anzeige
AW: Listbox sortieren
16.04.2019 17:04:18
Andre
Hallo Daniel,
wie würde der Code lauten, wenn ich nur 9 Spalten hätte und die 10. für die Nummerierung noch zu haben ist?
Gruß
Andre
AW: Listbox sortieren
16.04.2019 17:10:36
Daniel
Hi
hab ich doch geschrieben, ganz am Anfang, hast du meinen Beitrag denn gelesen oder nur Buchstaben angeschaut?
wenn du statt der Zählnummer lieber die Zeilennummer der Fundstelle aben willst, dann
Listbox1.List(lngAnzahl - 1, 9) = c.row
aber da du das C.row im Code bereits verwendet hast, und dein Level angeblich VBA-gut ist, sollest solche Dinge eigentlich selbstständig einarbeiten können..., ansonsten bitte das VBA-gut nochmal überdenken.
Gruß Daniel
Anzeige
AW: Listbox sortieren
16.04.2019 18:40:34
Andre
Hallo Daniel,
1. habe ich den Beitrag nicht selbst reingestellt, sondern Meister Herber. Er hat VBA-gut definiert.
Ich habe meine Zeilen aus Videos und Foren und leider nicht wirklich Ahnung.
Was ich aber schon verstanden habe, ist der Zähler, den Du geschrieben hast.
Leider ist es nicht das, was ich möchte. Ich brauche nicht die Zeile, in der die Daten im Tabellenblatt stehen sondern die durch scannen in die Listbox eingetragenen Werte sollen einfach von 1 bix X aufnummeriert werden.
Wenn ich also 5 Zeilen in der Listbox habe, soll für den ersten Satz die 1 in einer Spalte stehen, für den zweiten Satz die zwei in der Spalte usw.
Vermutlich ist es nicht ganz verständlich geschrieben worden.
Hättest Du dafür eine Idee?
Gruß
Andre
Anzeige
AW: Listbox sortieren
16.04.2019 19:00:10
Daniel
naja, nicht ein Meister Herber hat den Beitrag eingestellt, sondern du und du kannst, wenn du einen neuen Beitrag schreibst, deinen Level selbst wählen.
Das musst du sogar, denn ohne eine Auswahl kannst du den Beitrag nicht absenden.
das ist zumindest bei mir so, und bei Herber sind alle Forenteilnehmer gleichgestellt, da gibt es keine Unterschiede.
und ich habe dich schon verstanden, und die Antwort auf dein Problem steht in der zweiten Zeile meiner ersten Antwort.
Die Nummer die du da sehen willst, ist ja nichts anderes als die Indexnummer, über die du die Listboxwerte befüllst + 1.
Gruß Daniel
Anzeige
AW: Listbox sortieren
16.04.2019 19:14:19
Andre
Hallo nochmal,
den ersten Beitrag hat Herr Herber reingestellt, da ich auf der Arbeit ständig eine Fehlermeldung erhiet und ER hat das Level eingestellt. Warum schreibe ich das sonst...?
Letztlich habe ich den Code jetzt geändert von c.row (was Du auch geschrieben hast) in lngAnzahl und es scheint zu laufen.
Eigentlich simple (wenn man´s kann) und ich kann es eher nicht - bin ja ehrlich.
Danke nochmals und schönen Abend.
dass du jetzt persönlich kontakt mit dem
16.04.2019 19:56:27
Daniel
Forenadmin hast, ist eher unüblich, Herr Herber hält sich normalerweise hier soweit wie möglich raus.
auch war deine Formulierung eher flapsig, (Meister Herber, könnte auch Meister Proper sein), so dass ich das nicht erst genommen habe.
zumal dein Code jetzt auch nicht unbedingt auf einen Anfänger schließen lässt, irgenwie musst du den ja erstellt haben.
Gruß Daniel
Anzeige
AW: Listbox sortieren
16.04.2019 16:26:10
Nepumuk
Hallo Andre,
so?
Option Explicit

Dim Raus As Boolean

Private Sub TextBox_Scan_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    
    Dim c As Range
    Dim rngBereich As Range
    Dim strFirst As String
    Dim astrTemp() As String
    Dim ialngIndex As Long
    
    If Not Raus Then
        
        With Sheets("BESTAND")
            Set rngBereich = .Columns("A:A")
            Set c = rngBereich.Find(TextBox_Scan, LookIn:=xlValues, lookat:=xlPart)
            If Not c Is Nothing Then
                strFirst = c.Address
                Do
                    Redim Preserve astrTemp(10, ialngIndex)
                    astrTemp(0, ialngIndex) = ialngIndex + 1
                    astrTemp(1, ialngIndex) = .Cells(c.Row, 1).Value
                    astrTemp(2, ialngIndex) = .Cells(c.Row, 3).Value
                    astrTemp(3, ialngIndex) = .Cells(c.Row, 4).Value
                    astrTemp(4, ialngIndex) = .Cells(c.Row, 5).Value
                    astrTemp(5, ialngIndex) = .Cells(c.Row, 8).Value
                    astrTemp(6, ialngIndex) = .Cells(c.Row, 9).Value
                    astrTemp(7, ialngIndex) = ComboBox_Kunde.Text
                    astrTemp(8, ialngIndex) = TextBox_Auftrag.Text
                    astrTemp(9, ialngIndex) = .Cells(c.Row, 6).Value
                    astrTemp(10, ialngIndex) = .Cells(c.Row, 7).Value
                    ialngIndex = ialngIndex + 1
                    Set c = rngBereich.FindNext(c)
                Loop Until c.Address = strFirst
                ListBox1.Column = astrTemp
            Else
                MsgBox "Palette nicht gefunden!", 48
            End If
            
        End With
        
        TextBox_Scan.Value = ""
        
        Cancel = True
        Raus = True
        
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Listbox sortieren
16.04.2019 17:03:34
Andre
Hallo Nepomuk,
leider funktioniert es nicht.
Nach Eingabe in der Textbox kommen hunderte von Zeilennummern...
Ich möchte nur die Zeilennummern haben, von Zeiten die gefüllt werden.
AW: Listbox sortieren
16.04.2019 17:13:03
Nepumuk
Hallo Andre,
ich habe an der Suche selbst nichts geändert. Es ist nur die Ausgabe in einem Array eingebaut.
Ohne eine Mustermappe werde ich da nicht weiter kommen.
Gruß
Nepumuk
AW: Listbox sortieren
16.04.2019 17:43:31
Andre
Hallo Nepomuk,
ich habe die Datei hochgeladen:
https://www.herber.de/bbs/user/129191.xlsm
Noch mal kurz zur Erläuterung: Wenn man im Tabellenblatt Menu den Warenausgang anklickt und dann im Palettenscan den Barcode scannt, sucht er aus dem Bestand nach den Daten.
die Listbox hat ja 10 Spalten, die auch später eigentlich übertragen werden sollen. Ich denke aber, dass der Inhalt aus der TextBox "Shipment" auch anders in das Tabellenblatt WA übertragen werden kann und somit die 10. Spalte für die Nummerierung der Zeilen "frei" wäre.
Im Bestand sind ja jetzt 5 Datensätze. Wenn ich jetzt alle scanne, soll in der ListBox halt die Nummerierung 1-5 in einer Spalte angezeigt werden.
Sollte ich mal irgendwann 20 Paletten scannen, dann sollen eben die 1-20 angezeigt werden.
Meine VBA-Kenntnisse sind leider nicht so toll und ich habe diese Datei durch Videos und Foren erstellt.
Wäre also super, wenn Du es Dir ansehen könntest.
Danke und Gruß
Andre
Anzeige
AW: Listbox sortieren
16.04.2019 19:45:30
Andre
Hallo Hepomuk,
ich habe es hinbekommen. Brauchst nicht mehr "tüfteln".
Danke nochmals und schönen Abend.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige