Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
752to756
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
752to756
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ListBox - Werte anzeigen

ListBox - Werte anzeigen
13.04.2006 23:52:42
Pia
Hey Ihr!
Ich möchte folgendes realisieren:
In einer Listbox sollen alle Werte der Spalte B meiner Datenbank angezeigt werden. Allerdings dürfen dopplete Einträge (oder mehrfache) nicht mehrfach zur Auswahl stehen und es soll nach der Gesamtanzahl der Einträge sortiert werden.
Wie gehe ich da dran?
Danke!

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox - Werte anzeigen
14.04.2006 00:06:01
Nepumuk
Hallo Pia,
eigntlich wollte ich dir nicht mehr helfen, da du keine Rückmeldung gibst, ob es passt oder nicht, aber weil Ostern vor der Tür steht:
' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private Sub UserForm_Activate()
    Dim vntArray As Variant
    Dim strArray() As String, strTemp As String
    Dim lngRow As Long, lngCounter As Long
    With Tabelle1
        vntArray = .Range(.Cells(2, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1)).Value
    End With
    Call sortieren(1, UBound(vntArray), vntArray)
    For lngRow = 1 To UBound(vntArray)
        If vntArray(lngRow, 1) <> strTemp Then
            strTemp = vntArray(lngRow, 1)
            lngCounter = lngCounter + 1
            Redim Preserve strArray(1 To lngCounter)
            strArray(lngCounter) = strTemp
        End If
    Next
    ListBox1.List = strArray
End Sub

Private Sub sortieren(lngLBound As Long, lngUBound As Long, vntArray As Variant)
    Dim lngIndex1 As Long, lngIndex2 As Long
    Dim vntBuffer As Variant, vntTemp As Variant
    lngIndex1 = lngLBound
    lngIndex2 = lngUBound
    vntTemp = vntArray((lngLBound + lngUBound) \ 2, 1)
    Do
        Do While vntArray(lngIndex1, 1) < vntTemp
            lngIndex1 = lngIndex1 + 1
        Loop
        Do While vntTemp < vntArray(lngIndex2, 1)
            lngIndex2 = lngIndex2 - 1
        Loop
        If lngIndex1 <= lngIndex2 Then
            vntBuffer = vntArray(lngIndex1, 1)
            vntArray(lngIndex1, 1) = vntArray(lngIndex2, 1)
            vntArray(lngIndex2, 1) = vntBuffer
            lngIndex1 = lngIndex1 + 1
            lngIndex2 = lngIndex2 - 1
        End If
    Loop Until lngIndex1 > lngIndex2
    If lngLBound < lngIndex2 Then Call sortieren(lngLBound, lngIndex2, vntArray)
    If lngIndex1 < lngUBound Then Call sortieren(lngIndex1, lngUBound, vntArray)
End Sub

Das ganze ist für Spalte A geschrieben, du musst es dir ein bisschen anpassen.
Gruß
Nepumuk

Anzeige
AW: ListBox - Werte anzeigen
14.04.2006 00:11:13
Dieter
Wie war das mit den Kanonen und den Spatzen?
mfg Dieter
AW: ListBox - Werte anzeigen
14.04.2006 00:24:15
Pia
Hey Ihr beiden!
Ja, ich habe gerade gesehen, dass ich ein paar Antworten von Euch ohne Rückmeldung gelassen habe! Dafür ein Sorry von mir.
Ich habe diese Fragen echt "vergessen" !
Ich werde das gleich mal probieren und dann eine Rückmeldung geben! Danke schon mal!!
Mir ist gerade noch was eingefallen, ganz kurz:
Wie bekomme ich als RowSource etwas wie:
Datenbank!A1:B500
Hier sollten eigentlich beide Spalten untereinander aufgelistet werden, das funktioniert so aber nicht!
AW: ListBox - Werte anzeigen
14.04.2006 00:32:08
Pia
Hey Nepumuk,
habe es getestet, Die Werte stehen jetzt in Spalte G (also 7), habe versucht es anzupassen, aber es werden ALLE Werte angezeigt:
Dim vntArray As Variant
Dim strArray() As String, strTemp As String
Dim lngRow As Long, lngCounter As Long
With Datenbank
vntArray = .Range(.Cells(2, 7), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1)).Value
End With
Call sortieren(1, UBound(vntArray), vntArray)
For lngRow = 1 To UBound(vntArray)
If vntArray(lngRow, 7) strTemp Then
strTemp = vntArray(lngRow, 7)
lngCounter = lngCounter + 1
ReDim Preserve strArray(1 To lngCounter)
strArray(lngCounter) = strTemp
End If
Next
ComboBox1.List = strArray

Private Sub sortieren(lngLBound As Long, lngUBound As Long, vntArray As Variant)
Dim lngIndex1 As Long, lngIndex2 As Long
Dim vntBuffer As Variant, vntTemp As Variant
lngIndex1 = lngLBound
lngIndex2 = lngUBound
vntTemp = vntArray((lngLBound + lngUBound) \ 2, 1)
Do
Do While vntArray(lngIndex1, 7) < vntTemp
lngIndex1 = lngIndex1 + 1
Loop
Do While vntTemp < vntArray(lngIndex2, 1)
lngIndex2 = lngIndex2 - 1
Loop
If lngIndex1 <= lngIndex2 Then
vntBuffer = vntArray(lngIndex1, 7)
vntArray(lngIndex1, 7) = vntArray(lngIndex2, 7)
vntArray(lngIndex2, 7) = vntBuffer
lngIndex1 = lngIndex1 + 1
lngIndex2 = lngIndex2 - 1
End If
Loop Until lngIndex1 > lngIndex2
If lngLBound < lngIndex2 Then Call sortieren(lngLBound, lngIndex2, vntArray)
If lngIndex1 < lngUBound Then Call sortieren(lngIndex1, lngUBound, vntArray)
End Sub

Anzeige
AW: ListBox - Werte anzeigen
14.04.2006 00:43:21
Herbert
vntArray = .Range(.Cells(2, 7), .Cells(.Cells(.Rows.Count, 7).End(xlUp).Row, 1)).Value
mfg Herbert
AW: ListBox - Werte anzeigen
14.04.2006 00:48:24
Pia
Hey,
danke, bei weiterem Suchen habe ich dies dann gefunden!
Hat jemand noch eine Idee, wie ich als RowSource zwe Spalten angeben kann, welche dann untereinander angezeigt werden?
Pia
AW: ListBox - Werte anzeigen
14.04.2006 00:59:48
Herbert
Hi,
das geht mit RowSource nicht!
mfg Herbert
AW: ListBox - Werte anzeigen
14.04.2006 01:03:27
Pia
Geht das anders?
AW: ListBox - Werte anzeigen
14.04.2006 01:12:29
Herbert
Hi,
klar, am schnellsten mit Array.
mfg Herbert
AW: ListBox - Werte anzeigen
14.04.2006 01:13:49
Pia
am schnellsten?!
Ich habe damit noch nie zu tun gehabt, werde es aber mit dem letzten Code von Nepumuk (arbeitet ja auch mit Arrays) versuchen umzusetzen!
Anzeige
AW: ListBox - Werte anzeigen
14.04.2006 07:55:45
Nepumuk
Hallo Pia,
Wo stehen die Daten?
Wie sollen sie angezeigt werden?
Aus welcher Spalte sollen die doppelten entfernt werden?
Nach welcher Spalte soll sortiert werden?
Gruß
Nepumuk

AW: ListBox - Werte anzeigen
14.04.2006 21:17:38
Pia
Hey Nepumuk,
ich habe zwei Spalten nebeneinander. A und B
Nun zeige ich diese Daten in zwei Listboxen an:
comb_variabel.RowSource = "Daten!A2:A" & DATEN.Cells(DATEN.Rows.Count, 1).End(xlUp).Row
comb_fix.RowSource = "Daten!B2:B" & DATEN.Cells(DATEN.Rows.Count, 2).End(xlUp).Row
Nun würde ich es besser finden, wenn ich diese in EINER Listbox untereinander stehen lassen könnte.
Ich bin mit den Array auch nicht weiter gekommen!
Anzeige
AW: ListBox - Werte anzeigen
15.04.2006 11:04:19
Nepumuk
Hallo Pia,
jetzt muss ich noch mal nachfragen. Sollen dann die Werte beider Spalten zusammen sortiert werden oder jede für sich? Wenn sie zusammen sortiert werden, sollen dann Werte die in Spalte A und B gleich sind rausfliegen, so dass nur einer der beiden angezeigt wird?
Gruß
Nepumuk

AW: ListBox - Werte anzeigen
15.04.2006 23:28:02
Tassos
Hallo Pia,
mit folgendem Code werden beliebige Tabellenbereiche in eine Listbox
aufgelistet u. sortiert.
Doppelte sowie "leere" Einträge werden ebenfalls filtriert
Gruß
Tassos
Option Explicit

Sub Remdbl()
Dim AC As Range, C As Range, i%, x%, sw1, sw2, Itm
Dim Ndbl As New Collection
Set AC = Union(Sheets(1).Range("A1:A100"), Sheets(1).Range("B1:b100"))
'("A1:B100") ist erlaubt, Ranges anpassen
On Error Resume Next
For Each C In AC
Ndbl.Add C.Value, CStr(C.Value)
Next C
On Error GoTo 0
For i = 1 To Ndbl.Count - 1
For x = i + 1 To Ndbl.Count
If Ndbl(i) > Ndbl(x) Then
sw1 = Ndbl(i)
sw2 = Ndbl(x)
Ndbl.Add sw1, before:=x
Ndbl.Add sw2, before:=i
Ndbl.Remove i + 1
Ndbl.Remove x + 1
End If
Next x
Next i
For Each Itm In Ndbl
UserForm1.ListBox1.AddItem Itm 'oder "Sheets(1).ListBox1" wenn keine UF vorhanden
Next Itm
'UserForm1.Show 'optional
End 

Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige