Suchfunktion wenn Eingabefeld leer

  • Sonstige

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RainerLauer.

    Suchfunktion wenn Eingabefeld leer

    Hallo zusammen, habe leider mal wieder ein kleines Problem.

    Ich habe eine Eingabemaske mit 2 Felder und einen Code der es mir erlaubt mehrere Tabellenblätter zu durchsuchen und eine Listbox die die Ergebnisse zeigt.

    Allerdings wird jetzt nur ein Ergebnis angezeigt wenn beide Felder ausgefüllt sind. Ich brauche aber auch ein Ergebnis wenn ich nur ein Feld ausfülle und das andere leer lasse.

    Was kann ich da jetzt machen??? Vielen Dank für Eure Antwort.
    Unten noch mein Code.

    Option Explicit

    Private Sub cmdSearch_Click()
    Dim i As Integer
    lstResult.Clear
    For i = 1 To Sheets.Count
    SearchValue Sheets(i).UsedRange, txtStart, txtTarget
    Next i
    End Sub

    Private Function SearchValue(ActiveSheet As Range, strValue1 As String, strValue3 As String)
    'Durchsuchter Bereich: rgnSearchArea
    'Spalte 1 des Bereiches wird nach strValue1 durchsucht
    'Spalte 3 des Bereiches wird nach strValue3 durchsucht
    Dim arr() As String
    Dim i As Long, j As Long
    Dim strTmp As String

    With ActiveSheet
    For i = 1 To .Rows.Count
    If Trim(.Cells(i, 1)) = Trim(strValue1) And Trim(.Cells(i, 3)) = Trim(strValue3) Then
    For j = 1 To .Columns.Count
    strTmp = strTmp & .Cells(i, j) & vbTab
    Next j
    lstResult.AddItem strTmp
    strTmp = vbNullString
    End If
    Next i
    End With

    End Function
    Leider nicht, da hängt er sich auf. Ich muss das irgendwie in den oben angegebenen Code mit reinbringen, weiss leider nur nicht wie.
    Habe halt verschiedene Möglichkeiten.
    1. Ich gebe in beide Felder was ein und suche, das funktioniert ja auch.
    2. Ich gebe nur in das erste Feld was ein und
    3. Ich gebe nur in das zweite Feld was ein
    und da soll er dann alles ausgeben was er findet und das geht leider nicht.

    Danke
    Er hängt sich auf??? So muss er aber gehen:

    Visual Basic-Quellcode

    1. Private Sub cmdSearch_Click()
    2. Dim i As Integer
    3. lstResult.Clear
    4. if txtStart>"" and txtTarget>"" then
    5. For i = 1 To Sheets.Count
    6. SearchValue Sheets(i).UsedRange, txtStart, txtTarget
    7. Next i
    8. else
    9. msgbox "Da fehlen noch Eingaben!"
    10. end if
    11. End Sub
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Ich denke, du musst statt

    If Trim(.Cells(i, 1)) = Trim(strValue1) And Trim(.Cells(i, 3)) = Trim(strValue3) Then

    das hier schreiben:

    If Trim(.Cells(i, 1)) = Trim(strValue1) or Trim(.Cells(i, 3)) = Trim(strValue3) Then
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Hallo Marcus, Hallo Agent, funktioniert leider beides nicht.

    Wenn ich das von Agent nehme dann wählt er mir ja nicht aus. Ich will doch das wenn ich nur in Ankunftsort was reinschreibe und Abgangsort leer lasse, dass er mir alle Ergebnisse anzeigt, wo der gesuchte Wert in Ankunftsort drinsteht. Das macht er wie gesagt momentan noch nicht. Er zeigt die Ergebnisse nur an wenn ich bei beiden was eintragen.

    Wenn ich jetzt den Vorschlag von Marcus nehme, dann zeigt er mir leider zuviel an. wenn ich z.B. stuttgart und münchen eingebe, zeigt er mir auch stuttgart - berlin, stuttgart - Bochum... an, also alle wo der gesuchte Ort steht.

    Nehmen wir mal an ich suche von Stuttgart nach Berlin. Jetzt finde ich da nichts, dann will ich alle Ruten von Stuttgart anzeigen lassen, da ja vielleicht was in der Nähe liegt.

    Bitte gebt nicht auf mit mir, ich weiß ich bin ein schwerer Fall. Danke Rainer

    Visual Basic-Quellcode

    1. If ((Trim(.Cells(i, 1)) = Trim(strValue1)) or (Trim(strValue1) = "")) and ((Trim(.Cells(i, 3)) = Trim(strValue3)) or (Trim(strValue3) = "")) Then
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum