Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1224to1228
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

Code zum SUCHEN erweitern

Code zum SUCHEN erweitern
Jockel
Hallo,
ich habe eine Userform mit einer Listbox. Wenn ich in die TEXTBOX3 einen Suchbegriff eingebe und den Button (Code) drücke, werden mir alle Datensätze in die Listbox geladen, die dem Suchbegriff entsprechen.
(ich weiß leider nicht mehr, wer mir damals dieses Beispiel gemacht hat)
Meine Frage dazu: ich möchte nicht nur nach einem Suchbegriff suchen, sondern nach zwei. Ich stelle mir das so vor, das ich einfach noch eine Textbox (TEXTBOX4) auf meine Userform mache und dass ich darin noch ein Suchbegruff eingeben kann.
Bsp.
wenn ich in TEXTBOX3 "DATEI" eingebe
wenn ich in TEXTBOX4 "LÖSCHEN"
Dann sollen in die Listbox alle Datensätze geladen werden, bei denen BEIDE Suchbegriffe vorkommen.
Ist das Schwierig ? Hier mal mein jetziger Code:
Private Sub CommandButton6_Click()
UserForm1.ListBox1.Clear
'Suchen-Funktion Makros
With UserForm1
.ListBox1.Clear
Sheets("Daten").Activate
e = 0
'For i = 2 To ActiveSheet.UsedRange.Rows.Count
For i = 10 To Cells(Rows.Count, 2).End(xlUp).Row
If InStr(LCase(Cells(i, 1).Value), LCase(.TextBox3.Value)) > 0 Or _
InStr(LCase(Cells(i, 2).Value), LCase(.TextBox3.Value)) > 0 Then
.ListBox1.AddItem Cells(i, 1).Value
.ListBox1.Column(1, e) = Cells(i, 2).Value
.ListBox1.Column(2, e) = Cells(i, 3).Value
.ListBox1.Column(3, e) = Cells(i, 2).Hyperlinks(1).Address _
& IIf(Cells(i, 2).Hyperlinks(1).SubAddress  "", "#" _
& Cells(i, 2).Hyperlinks(1).SubAddress, "")
.ListBox1.Column(4, e) = Cells(i, 6).Value
.ListBox1.Column(5, e) = Cells(i, 7).Value
.ListBox1.Column(6, e) = Cells(i, 5).Value
e = e + 1
Else
End If
Next i
End With
Label15 = "Auswahl : " & TextBox3 & " ( " & ListBox1.ListCount & " )"
End Sub

Danke mal
Jockel

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Code zum SUCHEN erweitern
25.08.2011 11:08:34
Peter
Hallo Jockel,
versuche es so:
Option Explicit
Private Sub CommandButton6_Click()
Dim e  As Integer
Dim i  As Integer
If Trim$(TextBox3.Value) = "" And Trim$(TextBox4.Value) = "" Then
MsgBox "Ohne Suchbegriff kann nichts gefunden werden!", _
48, "   Hinweis für " & Application.UserName
TextBox3.SetFocus
Exit Sub
ElseIf Trim$(TextBox3.Value) = "" Then
TextBox3.Value = Trim$(TextBox4.Value)
ElseIf Trim$(TextBox4.Value) = "" Then
TextBox4.Value = Trim$(TextBox3.Value)
End If
UserForm1.ListBox1.Clear
'Suchen-Funktion Makros
With UserForm1
.ListBox1.Clear
Sheets("Daten").Activate
e = 0
'For i = 2 To ActiveSheet.UsedRange.Rows.Count
For i = 10 To Cells(Rows.Count, 2).End(xlUp).Row
If InStr(LCase(Cells(i, 1).Value), LCase(.TextBox3.Value)) > 0 Or _
InStr(LCase(Cells(i, 2).Value), LCase(.TextBox3.Value)) > 0 Or _
InStr(LCase(Cells(i, 1).Value), LCase(.TextBox4.Value)) > 0 Or _
InStr(LCase(Cells(i, 2).Value), LCase(.TextBox4.Value)) > 0 Then
.ListBox1.AddItem Cells(i, 1).Value
.ListBox1.Column(1, e) = Cells(i, 2).Value
.ListBox1.Column(2, e) = Cells(i, 3).Value
'.ListBox1.Column(3, e) = Cells(i, 2).Hyperlinks(1).Address _
& IIf(Cells(i, 2).Hyperlinks(1).SubAddress  "", "#" _
& Cells(i, 2).Hyperlinks(1).SubAddress, "")
.ListBox1.Column(4, e) = Cells(i, 6).Value
.ListBox1.Column(5, e) = Cells(i, 7).Value
.ListBox1.Column(6, e) = Cells(i, 5).Value
e = e + 1
Else
End If
Next i
End With
Label15 = "Auswahl : " & TextBox3 & " / " & TextBox4 & " ( " & ListBox1.ListCount & " )"
End Sub

Gruß Peter
Anzeige
AW: Code zum SUCHEN erweitern
25.08.2011 12:16:03
Jockel
Hallo Peter,
Danke.
Ich bin mir nicht sicher, ob der Code das filtert, das ich erfofft hatte.
Wenn ich in Textbox 3 einen Betriff eingebe zB: " Auto" , dann bekomme ich 343 DS angezeigt.
gebe ich in Textbox 3 = " Auto" ein und in Textbox4 zB "defekt", dann bekomme ich 344 DS angezeigt,
also einen mehr.
Es gibt in meinen DS nur EINEN DS, in dem " Auto" und "defekt" vorkommt.
Nur dieser DS sollte dann als Ergebnis rauskommen.
Wenn ich das ERgebnis anschaue, sieht es so aus , wie wenn der Code alle DS lädt, in denen ENTWEDER Inhalt aus Textbox3 ODER Inhalt aus Textbox 4 vorkommt.
Das ERgebnis sollte aber so sein : alle DS in denen Inhalt aus Textbox3 UND Inhalt aus Textbox 4 vorkommt.
Muss ich den AND Befeht vielleicht in OR ändern ?
Sonst super, Danke
Jockel
Anzeige
AW: Code zum SUCHEN erweitern
25.08.2011 14:58:46
Peter
Hallo Jockel,
dann ändere hier Or in And
If InStr(LCase(Cells(i, 1).Value), LCase(.TextBox3.Value)) > 0 Or _
   InStr(LCase(Cells(i, 2).Value), LCase(.TextBox3.Value)) > 0 And _
   InStr(LCase(Cells(i, 1).Value), LCase(.TextBox4.Value)) > 0 Or _
   InStr(LCase(Cells(i, 2).Value), LCase(.TextBox4.Value)) > 0 Then
Anzeige
AW: Code zum SUCHEN erweitern
26.08.2011 07:53:49
Jockel
Hallo Peter,
habe ich gemacht, aber da ist es genau so:
-wenn ich in beide Textboxen einen Suchbegriff eingebe, dann kommen ENTWEDER Datensätze mit Inhalt aus Textbox3 ODER es kommen Datensätze mit Inhalt aus Textbox4 oder aus beiden.
Aber nicht, dass nur Datensätze gesucht werden, in denen NUR die BEIDEN Suchbegriffe kommen.
Hmm, vielleicht geht das auch nicht !
Wäre aber kein Beinbruch, war nur ne Option.
Trotzdem Danke
GRuß
Jockel
AW: Code zum SUCHEN erweitern
28.08.2011 11:03:34
fcs
Hallo Jockel.
eigentlich sollte folgende Anpassung in der If-Anweisung passen: "And" statt "Or" und in der 2. Prüfung muss du natürlich Textbox4 und nicht Textbox3 angeben.
           If InStr(LCase(Cells(i, 1).Value), LCase(.TextBox3.Value)) > 0 And _
InStr(LCase(Cells(i, 2).Value), LCase(.TextBox4.Value)) > 0 Then

Ich würde die Prozedur aber insgesamt ein wenig aufräumen und nicht unbedingt mit der Aktivierung des Blatts "Daten" arbeiten.
Gruß
Franz
Private Sub CommandButton6_Click()
Dim wks As Worksheet, e As Long, i As Long
Set wks = Worksheets("Daten")
'Suchen-Funktion Makros
With UserForm1
.ListBox1.Clear
wks.Activate               'nicht unbedingt erforderlich
e = 0
For i = 10 To wks.Cells(wks.Rows.Count, 2).End(xlUp).Row
If InStr(LCase(wks.Cells(i, 1).Value), LCase(.TextBox3.Value)) > 0 And _
InStr(LCase(wks.Cells(i, 2).Value), LCase(.TextBox4.Value)) > 0 Then
.ListBox1.AddItem wks.Cells(i, 1).Value
.ListBox1.Column(1, e) = wks.Cells(i, 2).Value
.ListBox1.Column(2, e) = wks.Cells(i, 3).Value
If wks.Cells(i, 2).Hyperlinks.Count > 0 Then
.ListBox1.Column(3, e) = wks.Cells(i, 2).Hyperlinks(1).Address _
& IIf(wks.Cells(i, 2).Hyperlinks(1).SubAddress  "", "#" _
& wks.Cells(i, 2).Hyperlinks(1).SubAddress, "")
End If
.ListBox1.Column(4, e) = wks.Cells(i, 6).Value
.ListBox1.Column(5, e) = wks.Cells(i, 7).Value
.ListBox1.Column(6, e) = wks.Cells(i, 5).Value
e = e + 1
Else
End If
Next i
.Label15 = "Auswahl : " & .TextBox3 & " ( " & .ListBox1.ListCount & " )"
End With
End Sub

Anzeige
AW: Code zum SUCHEN erweitern
25.08.2011 11:10:30
Peter
Hallo Jockel,
den Hyperlink musst Du wieder aktivieren, der hat mich beim Testen nur gestört.
Gruß Peter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige