| |
Visual-Basic EinsteigerRe: Suchen in einer ListBox | | | Autor: Dieter (Moderator) | Datum: 18.09.01 12:04 |
| Hallo Spike,
hierfür einfach nachfolgenden Code verwenden:
<code><font color=green>' Schnelle Suche innerhalb einer ListBox</font>
Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg _
As Long, ByVal wParam As Long, ByVal lParam As _
String) As Long
Private Const LB_FINDSTRING = &H18F</code> <code><font color=green>' Prüft, ob ein Wert in einer ListBox enthalten ist
' und gibt als Ergebnis den ListIndex zurück
' (-1, wenn nicht vorhanden)</font>
Public Function IsInListe(Liste As ListBox, _
ByVal Item As String) As Integer
IsInListe = SendMessage(Liste.hwnd, _
LB_FINDSTRING, -1, Item)
End Function</code> Cu
Dieter | |
Suchen in einer ListBox | | | Autor: Spike | Datum: 18.09.01 11:56 |
| Hi,
ich möchte gerne eine Suchfunktion schreiben, die den Inhalt einer ListBox nach dem Inhalt einer Textbox durchsucht und danach den gefundenen Eintrag in der ListBox selektiert!
Die Textbox und die ListBox befinden sich auf verschiedenen Formularen.
Es funktioniert im großen und ganzen schon, doch nur dann, wenn der Inhalt der Textbox exakt (auch Groß- und Kleinschreibung) mit dem Inhalt der ListBox übereinstimmt!
Wie kann ich nach einer teilweisen Übereinstimmung suchen?
z. B. in der ListBox steht "Die Killerhand", im Textfeld "Killer".
Nun soll er mir den Eintrag "Die Killerhand" als Treffer anzeigen. | |
Re: Suchen in einer ListBox | | | Autor: Spike | Datum: 18.09.01 12:25 |
| Das funktioniert noch nicht ganz.
Wenn ich nach einem String suche, der innerhalb der ListBox mehrmals vorkommt, liefert die Funktion -1! | |
Re: Suchen in einer ListBox | | | Autor: Dieter (Moderator) | Datum: 18.09.01 12:29 |
| Hi Spike,
das ist aber eigenartig.
Ich hab's eben nochmal explizit probeirt.
Die Routine funktioniert - sowohl bei unsortierten Listen, als auch bei sortieren Liste.
Prüf' doch nochmals Deinen Code.
Cu
Dieter | |
Re: Suchen in einer ListBox | | | Autor: Spike | Datum: 18.09.01 12:41 |
| Nein, es funktioniert nicht!
Hier der Code, wie ich Deine Funktion aufrufe:
Private Sub cmdSucheStarten_Click()
Dim Index As Integer
Index = IsInListe(frmMain.listTitel, Me.txtTitel.Text)
If Index = -1 Then
MsgBox "Keine Einträge vorhanden!", vbInformation, "Suche abgeschlossen"
Else
Unload Me
frmMain.listTitel.Selected(Index) = True
End If
End Sub
In der Listbox gibt es den Eintrag "Die Killerhand". Wenn ich jetzt in die Textbox
"die killerhand" eingebe, findet er den Eintrag, wenn ich aber nur "killer" eingebe, bringt er die MsgBox! | |
Re: Suchen in einer ListBox | | | Autor: Dieter (Moderator) | Datum: 18.09.01 13:04 |
| Hallo Spike,
das Problem ist, dass Du die Form entlädst und dann den Index an die frmMain übergibst - das geht nicht!
Cu
Dieter | |
Re: Suchen in einer ListBox | | | Autor: Spike | Datum: 18.09.01 13:12 |
| OK, jetzt entlade ich die Form nicht mehr, aber es funktioniert trotzdem nicht!
Er beachtet zwar die Gro- und Kleinschreibung nicht, doch wenn ich nach einem Teilstring suche, der in der ListBox vorkommt, liefert die Funktion -1!
Ich muss also "die killerhand" eingeben, damit der den Eintrag in der ListBox markiert.
Ich will aber, das z. B. "killer" auch ausreicht um einen Treffer zu haben. | |
Re: Suchen in einer ListBox | | | Autor: Spike | Datum: 18.09.01 13:31 |
| Jetzt weiss ich worans liegt!
Die Funktion durchsucht die ListBox nach dem String der in der Textbox steht, jedoch muss der Eintrag der ListBox mit dem String der in der Textbox steht beginnen!
Also muss, wenn ich "killer" eingebe, ein Eintrag in der ListBox vorhanden sein, der mit "killer" beginnt!
Ich möchte aber, das der String nach dem ich suche, irgendwo in der ListBox steht!
Geht das? | |
Re: Suchen in einer ListBox | | | Autor: Dieter (Moderator) | Datum: 18.09.01 13:41 |
| Hallo Spike,
dan musst Du die Suche ungefähr folgendermassen realisiern:
<code> Dim Index As Integer
Dim I As Integer
With List1
Index = -1
For I = 0 To .ListCount - 1
If .List(I) Like "*" & Text1.Text & "*" Then
Index = I: Exit For
End If
Next I
.ListIndex = Index
End With</code> Cu
Dieter | |
Danke | | | Autor: Spike | Datum: 18.09.01 14:36 |
| Danke, jetzt klappt es!
Ich habs noch ein wenig abgeändert und nun sucht er nach dem was ich eingegeben habe ohne auf Groß- und Kleinschreibung zu achten, egal wo es in der ListBox steht! | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|