PDA

Vollständige Version anzeigen : In Tabelle mit Userform suchen / Listbox ausgeben


Lexxor
10.07.2014, 08:38
Guten Morgen,

ich bin gedanklich am verzweifeln. Irgendwie fehlt mir der letzte Kniff um das Problem zu lösen.

Und zwar habe ich eine Tabelle mit vielen Datensätzen. Nun will ich über ein Userform in dieser Tabelle suchen und mir die Ergebnisse in einer Listbox anzeigen lassen.

Problem ist das ich mehrere Suchmöglichkeiten bieten möchte und mich nicht auf eine festlegen will.

Also entweder kann der Nutzer nach Namen oder nach Vornamen suchen oder auch nach beiden.
Also bräuchte ich im Prinzip eine UND ODER Programmierung.

Hier mal mein zusammengebastelter Code den ich bisher habe:

Bevor jmd fragt warum ich das so und so gemacht habe, ich hab mir den Code zusammengesucht da meine Programmierkenntnisse zum einigermaßen verstehn ausreichen aber nicht zum selber "sprechen" ;)

Sub Suchen()
Dim lng As Long
Dim I As Long

tbName = Format(tbName.Text)
tbVorname = Format(tbVorname.Text)
tbPK = Format(tbPK.Text)
tbEinheit = Format(tbEinheit.Text)
tbEingang = Format(tbEingang.Text)
tbAusgang = Format(tbAusgang.Text)

ListBox1.Clear
ListBox1.ColumnCount = 7
ListBox1.ColumnWidths = "30;100;100;80;100;60;60"
ListBox1.TextAlign = fmTextAlignLeft
ListBox1.Clear

I = 0

For lng = 8 To ActiveSheet.UsedRange.Rows.Count
If InStr(1, LCase(Cells(lng, 2).Value), LCase(tbName.Value)) > 0 _
And InStr(1, LCase(Cells(lng, 4).Value), LCase(tbVorname.Value)) > 0 _
And InStr(1, LCase(Cells(lng, 6).Value), LCase(tbPK.Value)) > 0 _
And InStr(1, LCase(Cells(lng, 8).Value), LCase(tbEinheit.Value)) > 0 _
And InStr(1, LCase(Cells(lng, 18).Value), LCase(tbEingang.Value)) > 0 _
And InStr(1, LCase(Cells(lng, 19).Value), LCase(tbAusgang.Value)) > 0 _
Then

ListBox1.AddItem Cells(lng, 1).Value
ListBox1.Column(1, I) = Cells(lng, 2).Value
ListBox1.Column(2, I) = Cells(lng, 4).Value
ListBox1.Column(3, I) = Cells(lng, 6).Value
ListBox1.Column(4, I) = Cells(lng, 8).Value
ListBox1.Column(5, I) = Cells(lng, 18).Value
ListBox1.Column(6, I) = Cells(lng, 19).Value

I = I + 1

End If

Next lng

End Sub

Der Code an sich funktioniert auch AUSSER es gibt einen Datensatz der eine nicht befüllte Zelle ausweist. Dieser Datensatz wird dann nicht gefunden.

Vielen Dank fürs Kopfzerbrechen

Mc Santa
10.07.2014, 08:43
Hallo,

eine Testdatei hilft uns sehr den Code zu verstehen, und dir bei dem Problem weiter zu helfen :)

VG

aloys78
10.07.2014, 08:47
Hallo Lexxor,
Hier mal mein zusammengebastelter Code den ich bisher habe:
Nützlicher wäre eine Beispiel-Datei
- mit einer Reihe von Namenskombinationen
- und der Userform

Gruß
Aloys

Anmerkung: der Thread ist doppelt.

Lexxor
10.07.2014, 08:59
Beispieldatei wurde zugefügt.

Doppelposting:
Ja der PC hier spielt nicht so mit wie ich will. War ein versehen aber hab nichts zum löschen gefunden.