Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1788to1792
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

VBA Suche mit mehreren Ergebnissen

VBA Suche mit mehreren Ergebnissen
29.10.2020 16:34:09
Clara
Guten Abend:)
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address = "$D$5" Then
Dim rngSearchISIN As Range
If IsEmpty(Range("D5").Value) Then
Range("D5").Select
MsgBox "Bitte ISIN des Anlageguts eingeben oder, falls nicht vorhanden, neue Anlage  _
erstellen.", vbInformation
Else
Set rngSearch = Columns(5).Find(What:=Range("D5").Value, LookIn:=xlValues, LookAt:= _
xlWhole, MatchCase:=True)
If Not rngSearch Is Nothing Then
rngSearch.Select
Application.Goto ActiveCell.EntireRow, True
ActiveCell.Offset(0, 4).Select
Set rngSearch = Nothing
Else
MsgBox "ISIN " & Range("D5").Value & " nicht vorhanden.", vbExclamation, "Hinweis"
Range("D5").Select
End If
End If
End If
Application.ScreenUpdating = True
End Sub
Über den obigen Code suche ich in meiner xlsm etwas. Hat jemand eine Idee, wie ich diese dahingehend erweitern kann, dass mir mehrere Treffer angezeigt werden? D.h. dass der Inhalt aus Range("D5") in mehreren Suchzellen enthalten ist.
Danke für Ideen, Tipps und Tricks :)
Grüße
Clara

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Suche mit mehreren Ergebnissen
29.10.2020 16:53:34
Nepumuk
Hallo Clara,
wie soll das ablaufen? Willst du eine MsgBox zum weitersuchen?
Gruß
Nepumuk
AW: VBA Suche mit mehreren Ergebnissen
29.10.2020 17:20:34
Clara
Hi Nepumuk,
das wäre eine Idee. Ich dachte irgendwie daran das so ähnlich wie die Suchfunktion zu gestalten, da kann man ja auch mit Weitersuchen zur nächsten hüpfen, wenn es die denn gibt.
Falls das zu umständlich ist, muss ich mir was anderes überlegen, wie ich es sicher machen kann, dass nix übersehen wird.
LG
AW: VBA Suche mit mehreren Ergebnissen
29.10.2020 17:21:01
Clara
Wäre das mit einer msgbox sinnvoll?
AW: VBA Suche mit mehreren Ergebnissen
29.10.2020 17:39:14
Nepumuk
Hallo Clara,
teste mal:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim rngSearch As Range
    Dim strFirstAddress As String
    Dim blnMultiFound As Boolean
    
    If Target.Address = "$D$5" Then
        If IsEmpty(Range("D5").Value) Then
            Range("D5").Select
            MsgBox "Bitte ISIN des Anlageguts eingeben oder, falls nicht vorhanden, neue Anlage erstellen.", vbInformation
        Else
            Set rngSearch = Columns(5).Find(What:=Range("D5").Value, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
            If Not rngSearch Is Nothing Then
                strFirstAddress = rngSearch.Address
                Do
                    rngSearch.Select
                    If MsgBox("Weitersuchen?", vbQuestion Or vbYesNo, "Abfrage") = vbNo Then Exit Do
                    Set rngSearch = Columns(5).FindNext(After:=rngSearch)
                    If rngSearch.Address <> strFirstAddress Then
                        blnMultiFound = True
                    Else
                        If blnMultiFound Then
                            If MsgBox("Letzte Fundstelle. Nochmal von vorne?", vbQuestion Or vbYesNo, "Abfrage") = vbNo Then Exit Do
                        Else
                            Call MsgBox("Keine weiteren Fundstellen.", vbExclamation, "Hinweis")
                            Exit Do
                        End If
                    End If
                Loop
                Set rngSearch = Nothing
            Else
                MsgBox "ISIN " & Range("D5").Value & " nicht vorhanden.", vbExclamation, "Hinweis"
                Range("D5").Select
            End If
        End If
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA Suche mit mehreren Ergebnissen
30.10.2020 08:00:52
Clara
Guten Morgen Nepumuk,
ich sehe, dass es mehrere Ergebnisse gibt, da die msgbox "Weitersuchen?" dann einfach mehrmals hintereinander aufpoppt. Gibt es noch eine Möglichkeit, dass zwischen den einzelnen Msgbox zu den jeweiligen Ergebnissen gesprungen wird?
LG
AW: VBA Suche mit mehreren Ergebnissen
30.10.2020 08:04:19
Nepumuk
Hallo Clara,
das macht dieser Befehl: rngSearch.Select schon.
Gruß
Nepumuk
AW: VBA Suche mit mehreren Ergebnissen
30.10.2020 08:38:19
Nepumuk
Hallo Clara,
da kann ich nicht viel dazu sagen, das VBA-Projekt ist gesperrt. Das die Zellen selektiert werden siehst du aber nach dem beenden der Suche, da ist die letzte Fundstelle markiert.
Gruß
Nepumuk
Anzeige
AW: VBA Suche mit mehreren Ergebnissen
30.10.2020 08:40:21
Nepumuk
Achso,
ich könnte die aktuelle Fundstelle einfärben damit sie besser sichtbar ist.
Gruß
Nepumuk
AW: VBA Suche mit mehreren Ergebnissen
30.10.2020 09:26:09
Clara
Sorry, daran hatte ich nicht gedacht.
D.h. ich muss eigentlich einfach auf "Nein" klicken und dann springt's zur aktuellen Fundstelle. Wenn ich danach weitersuchen will, dann suche ich nochmal und gehe auf die nächste Fundstelle... Korrekt?
AW: VBA Suche mit mehreren Ergebnissen
30.10.2020 09:32:25
Nepumuk
Hallo Clara,
nein. Die suche beginnt nach der aktiven Zelle, also D5 oder D6 es wird also bei erneuter Suche die erste Fundstelle wieder als erstes gefunden. Test mal mit einfärben der aktuellen Fundstelle, ist kein großer Aufwand:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim rngSearch As Range
    Dim strFirstAddress As String
    Dim blnMultiFound As Boolean
    
    If Target.Address = "$D$5" Then
        If IsEmpty(Target.Value) Then
            Target.Select
            MsgBox "Bitte ISIN des Anlageguts eingeben oder, falls nicht vorhanden, neue Anlage erstellen.", vbInformation
        Else
            Set rngSearch = Columns(5).Find(What:=Target.Value, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
            If Not rngSearch Is Nothing Then
                strFirstAddress = rngSearch.Address
                Do
                    rngSearch.Interior.Color = vbGreen
                    rngSearch.Select
                    If MsgBox("Weitersuchen?", vbQuestion Or vbYesNo, "Abfrage") = vbNo Then
                        rngSearch.Interior.Pattern = xlPatternNone
                        Exit Do
                    End If
                    rngSearch.Interior.Pattern = xlPatternNone
                    Set rngSearch = Columns(5).FindNext(After:=rngSearch)
                    If rngSearch.Address <> strFirstAddress Then
                        blnMultiFound = True
                    Else
                        If blnMultiFound Then
                            If MsgBox("Letzte Fundstelle. Nochmal von vorne?", vbQuestion Or vbYesNo, "Abfrage") = vbNo Then Exit Do
                        Else
                            Call MsgBox("Keine weiteren Fundstellen.", vbExclamation, "Hinweis")
                            Exit Do
                        End If
                    End If
                Loop
                Set rngSearch = Nothing
            Else
                MsgBox "ISIN " & Target.Value & " nicht vorhanden.", vbExclamation, "Hinweis"
                Target.Select
            End If
        End If
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA Suche mit mehreren Ergebnissen
30.10.2020 10:32:50
Nepumuk
Hallo Clara,
warum ist dein altes Programm noch drin? Damit funktioniert das einfärben nicht. Das genügt:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    'ISIN
    
    Dim rngSearch2 As Range
    Dim strFirstAddress As String
    Dim blnMultiFound As Boolean
    
    If Target.Address = "$D$5" Then
        If IsEmpty(Target.Value) Then
            Target.Select
            MsgBox "Bitte ISIN des Anlageguts eingeben oder, falls nicht vorhanden, neue Anlage erstellen.", vbInformation
        Else
            Set rngSearch2 = Columns(5).Find(What:=Target.Value, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
            If Not rngSearch2 Is Nothing Then
                strFirstAddress = rngSearch2.Address
                Do
                    rngSearch2.Interior.Color = vbGreen
                    rngSearch2.Select
                    If MsgBox("Weitersuchen?", vbQuestion Or vbYesNo, "Abfrage") = vbNo Then
                        rngSearch2.Interior.Pattern = xlPatternNone
                        Exit Do
                    End If
                    rngSearch2.Interior.Pattern = xlPatternNone
                    Set rngSearch2 = Columns(5).FindNext(After:=rngSearch2)
                    If rngSearch2.Address <> strFirstAddress Then
                        blnMultiFound = True
                    Else
                        If blnMultiFound Then
                            If MsgBox("Letzte Fundstelle. Nochmal von vorne?", vbQuestion Or vbYesNo, "Abfrage") = vbNo Then Exit Do
                        Else
                            Call MsgBox("Keine weiteren Fundstellen.", vbExclamation, "Hinweis")
                            Exit Do
                        End If
                    End If
                Loop
                Set rngSearch2 = Nothing
            Else
                MsgBox "ISIN " & Target.Value & " nicht vorhanden.", vbExclamation, "Hinweis"
                Target.Select
            End If
        End If
    End If
End Sub

Gruß
Nepumuk
Anzeige
Danke Nepumuk owT
30.10.2020 10:35:27
Clara

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige