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

gefilterte Daten von Exceltabelle in Listbox

gefilterte Daten von Exceltabelle in Listbox
29.11.2003 18:15:39
Reinhard
Hallo Welt,
wie kann ich aus einer Exceldatenbank gefilterte Daten in einer VBA-Listbox anzeigen?
Und wie kann ich Doppeleinträge in einer VBA-Listbox ausblenden?

Im voraus für eine Antwort, Danke!

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: gefilterte Daten von Exceltabelle in Listbox
29.11.2003 18:55:31
K.Rola
Hallo,

Listbox in userform oder Tabelle? Soll die MatchEntry- Eigenschaft
genutzt werden? Einspaltig oder mehrspaltig?

Gruß K.Rola
AW: gefilterte Daten von Exceltabelle in Listbox
29.11.2003 19:08:59
Reinhard
Hallo,
ich benutze die Listbox in Userform.
Die MatchEntry-Eigenschaft kenn ich nicht, also egal.
Die Listbox nutze ich mehrspaltig, spielt das eine Rolle.

Gruß
Reinhard
AW: gefilterte Daten von Exceltabelle in Listbox
29.11.2003 19:25:06
K.Rola
Hallo,

matchentry bedeutet, dass du durch Eingabe eines oder mehrerer
Zeichen in der Listbox suchen kannst, nicht gerade unwichtig.

Gruß K.Rola
AW: gefilterte Daten von Exceltabelle in Listbox
29.11.2003 19:41:53
Reinhard
Hallo,
ich habe in der Excelhilfe nachgesehen, ganz toll aber nicht das was ich suche.
ich suche eine Lösung für folgendes Beispiel:

Datenbank in Exceltabelle:
Nummer Name Vorname
1 müller heidi
2 huber zenzi
2 jakob susi
3 huber walburga
4 meier kresszenz

jetzt möchte ich in der Listbox angezeigt sehen:
Listbox1
1 müller heidi
2 huber zenzi
3 huber walburga
4 meier kresszenz

oder in einer zweiten
Listbox2
2 huber zenzi
3 huber walburga

Gruß
Reinhard
Anzeige
noch offen
29.11.2003 20:54:54
K.Rola
Hallo,

ich blende mich mal aus, weil ich die Aufgabenstellung nicht
richtig verstehe.

Gruß K.Rola
Noch offen
30.11.2003 02:44:17
Reinhard
Hallo Namenskollege,
dein Beispiel ist anscheinend nicht nur mir unklar.

Soll in Listbox1 gezeigt/gefiltert werden:
Alle Namen die in Spalte 'Nummer' einen einzigartigen Wert haben.
Kommt die Nummer mehrfach vor, so wird der erste Eintrag mit dieser Nummer genommen.

Soll in Listbox2 gezeigt/gefiltert werden:
Liste alle Namenssätze auf die in Spalte 'Namen' gleich sind.

Gruß
Reinhard
ps: K.Rola ist sehr gut und hätte dir sicher gut helfen können, aber es macht keinen Spass einem Fragesteller zu helfen wenn die Informationen so spärlich fliessen.
Anzeige
AW: Noch offen
30.11.2003 09:18:39
Reinhard
Hallo Reinhard,
mein Beispiel hast Du absolut richtig erkannt, und Danke für den Hinweis.

Ich könnte meine Listbox auch mit einer Schleife und suchen/vergleichen füllen. Aber da gibt es doch sicherlich eine bessere Lösung.

Gruß
Reinhard
AW: Noch offen
30.11.2003 10:27:24
Nepumuk
Hallo Reinhard,
du schreibst aus eine Exceldatenbank gefilterte Werte. Ist in der Exceltabelle ein Autofilter gesetzt?
Gruß
Nepumuk
AW: Noch offen
30.11.2003 10:38:30
Reinhard
Hallo Nepumuk,
ich möchte aus einer Exceldatenbank gefilterte Werte in einer Listbox darstellen.
Es ist kein Autofilter gesetzt. Kann man das mit einem Filter machen.

Gruß
Reinhard
Anzeige
AW: Noch offen
30.11.2003 10:53:00
Nepumuk
Hallo Reinhard,
dann besser mit Arrys arbeiten. Diese Vorgehensweise ist wesentlich schneller als Zell- und Listboxeinträge zu vergleichen.
Mein Vorschlag:


Option Explicit
Private Sub UserForm_Activate()
Dim strArray1() As String, strArray2() As String, varArray() As Variant
Dim lngZeile As Long, intSpalte As Integer, bolgefunden As Boolean
Dim lngDoppelt As Long, lngArrayzeile As Long, strZwischenspeicher() As String
ReDim strZwischenspeicher(0)
varArray = Range(Cells(2, 1), Cells(Cells(65536, 1).End(xlUp).Row, 3))
'Keine doppelten Nummern
For lngZeile = 1 To UBound(varArray)
For lngArrayzeile = 1 To UBound(strZwischenspeicher)
If varArray(lngZeile, 1) = strZwischenspeicher(lngArrayzeile) Then bolgefunden = True: Exit For
Next
If Not bolgefunden Then
lngDoppelt = lngDoppelt + 1
ReDim Preserve strZwischenspeicher(0 To lngDoppelt)
strZwischenspeicher(lngDoppelt) = varArray(lngZeile, 1)
Else
bolgefunden = False
End If
Next
ReDim strArray1(1 To lngDoppelt, 1 To 3)
lngDoppelt = 0
ReDim strZwischenspeicher(0)
For lngZeile = 1 To UBound(varArray)
For lngArrayzeile = 1 To UBound(strZwischenspeicher)
If varArray(lngZeile, 1) = strZwischenspeicher(lngArrayzeile) Then bolgefunden = True: Exit For
Next
If Not bolgefunden Then
lngDoppelt = lngDoppelt + 1
ReDim Preserve strZwischenspeicher(0 To lngDoppelt)
strZwischenspeicher(lngDoppelt) = varArray(lngZeile, 1)
For intSpalte = 1 To 3
strArray1(lngDoppelt, intSpalte) = varArray(lngZeile, intSpalte)
Next
Else
bolgefunden = False
End If
Next
'Doppelte Namen
lngDoppelt = 0
For lngZeile = 1 To UBound(varArray)
For lngArrayzeile = 1 To UBound(varArray)
If varArray(lngZeile, 2) = varArray(lngArrayzeile, 2) And lngZeile <> lngArrayzeile Then lngDoppelt = lngDoppelt + 1: Exit For
Next
Next
ReDim strArray2(1 To lngDoppelt, 1 To 3)
lngDoppelt = 0
For lngZeile = 1 To UBound(varArray)
For lngArrayzeile = 1 To UBound(varArray)
If varArray(lngZeile, 2) = varArray(lngArrayzeile, 2) And lngZeile <> lngArrayzeile Then
lngDoppelt = lngDoppelt + 1
For intSpalte = 1 To 3
strArray2(lngDoppelt, intSpalte) = varArray(lngZeile, intSpalte)
Next
Exit For
End If
Next
Next
ListBox1.List = CVar(strArray1)
ListBox2.List = CVar(strArray2)
End Sub



Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk
Anzeige
AW: Noch offen
30.11.2003 11:46:15
Reinhard
Hallo Nepumuk,
vielen Dank für Deine Mühe mir zu helfen.
Aber ich bekomme es immer noch nicht hin.
Es scheitert bei mir scheinbar schon an den einfachsten Dingen.
Bei der Zuweisung "varArray = Range(Cells(2, 1), Cells(Cells(65536, 1).End(xlUp).Row, 3))
" bekomme ich den Kompilierfehler "keine Zuweisung an Datenfeld möglich"

Ich find es nicht heraus, was ich falsch mache.
Ich freue mich auf eine zweite Hilfe von Dir.

Gruß
Reinhard
AW: Noch offen
30.11.2003 11:54:23
Nepumuk
Hallo Reinhard,
mach mal in der ersten Programmzeile in der: varArray() As Variant die Klammenr nach varArray weg.
Gruß
Nepumuk
P.S. Ich bin davon ausgegangen, dass deine Daten in Spalte A bis C ab Zeile 2 zu finden sind.
Anzeige
Lösung erhalten
30.11.2003 12:19:05
Reinhard
Hallo Nepumuk,
ich bin begeistert, es funktioniert,
danke, danke, danke!
Du bist echt weiter zu empfehlen!

Auf ein Andermal

Gruß
Reinhard

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige