Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
464to468
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
464to468
464to468
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Weitersuchen (erneut)

Weitersuchen (erneut)
06.08.2004 07:17:32
rainix
Hallo und guten Morgen,
ich habe hier ein UserForm Formular bei welchem ein Suchbegriff auf einer zweiten Tabelle gesucht und ausgegeben wird. Nun soll nach einer Abfrage per MsgBox die Suche fortgesetzt werden. Trotz viel ausprobieren und nachschlagen im Forumsarchiv kommt mir hier keine einfache Idee, den Code entsprechend einfach zu erweitern. Vieleicht kann mir hier einer mit einer Idee weiterhelfen. Wäre echt spitze.
Ich habe zum besseren Verständniss den derzeitigen Code mal mit hochgeladen.

Private Sub CommandButton12_Click()
z = 2
Do While Cells(z, 3) <> TextBox9.Text
z = z + 1
If z > 10000 Then                                  'Suchbegrenzung
'Message Box Angaben wenn keine Angaben gefunden werden
MsgBox "Keine Daten zum Mitglied " & TextBox9 & " im Jahr " & ComboBox1 & " anzuzeigen. Es sind entweder keine Daten vorhanden oder die Namenseingabe ist nicht korrekt.", vbOKOnly + vbExclamation, "Datenabfrage"
TextBox9.SetFocus                               'Cursor wieder in erste Textbox setzen
Exit Sub
End If
Loop
Cells(z, 3).Select
TextBox3 = Cells(z, 3)                              'Wert ausgeben
ActiveWorkbook.Saved = True                         'Keine Speicherabfrage
ActiveWorkbook.Close                                'Aktive Arbeitstabelle schließen
weiter = MsgBox("Weitersuchen ?", vbYesNo + vbInformation, "Weitersuchen")
If weiter = vbNo Then Exit Sub
End Sub

Vielen Dank schonmal im Voraus bis hierher.
Gruß aus Wuppertal
rainix (Rainer)

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Weitersuchen (erneut)
06.08.2004 08:54:22
Nepumuk
Hallo Rainer,
sequenzielles Suchen in der Tabelle ist extrem ineffektiv. Entweder du liest den Spalteninhalt in ein Variantarray ein, oder du verwendest die Find-Methode.


'Beispiel 1:
Public Sub test1()
    Dim varArray As Variant, lngIndex As Long, bolgefunden As Boolean
    With Worksheets("Tabelle1")
        varArray = .Range(.Cells(2, 3), .Cells(.Cells(Rows.Count, 3).End(xlUp).Row, 3))
    End With
    For lngIndex = 0 To UBound(varArray)
        If varArray(lngIndex, 1) = Dein_Suchbegriff Then bolgefunden = TrueExit For
    Next
    If Not bolgefunden Then MsgBox "Nix gefunden", 64, "Info"
End Sub
'Beispiel 2:
Public Sub test2()
    Dim myRange As Range
    With Worksheets("Tabelle1")
        Set myRange = .Columns(3).Find(What:=Dein_Suchbegriff, LookIn:=xlValues, LookAt:=xlWhole)
    End With
    If myRange Is Nothing Then MsgBox "Nix gefunden", 64, "Info"
End Sub


Diese beiden Methode sind tausendmal schneller wie deine. Daher erübrigt sich das weitersuchen.
Gruß
Nepumuk
Anzeige
AW: Weitersuchen (erneut)
06.08.2004 09:05:04
rainix
Hallo Nepumuk,
erstmal vielen dank bis hierher, ich werde heute noch den Code entsprechend einbauen und testen ob dieser auch so läuft wie ich mir das vorstelle.
Melde mich dann wieder.
rainix (Rainer)
AW: Weitersuchen (erneut)
07.08.2004 09:03:54
Rainix
Hallo Nepumuk,
wie schon gestern angekündigt, habe ich den Code noch ausprobiert, doch leider ist das Ergebniss nicht so, wie ich es benötige.
Vieleicht habe ich mich auch nicht deutlich genug augedrückt.
Was ich brauche ist eigentlich eine reine "weitersuchen" Funktion, wlche ab der Stelle an welcher ein gefundener Datensatz erkannt und ausgegeben wurde weitersucht. Es soll also jeweils der nächste gefundene Datensatz in den entsprechenden TextBoxen angezeigt werden.
Es handelt sich hier um eine Liste mit bis an die 5.000 Namen, welche auch schonmal doppelte Vor- oder Nachnahmen haben.
Kurz gesagt:
Datensatz suchen; ersten Datensatz gefunden und Ausgabe in TextBox; Auswahl Datensatz richtig ja/nein; wenn ja dann Exit Sub , wenn nein dann weitersuchen mit den gleichen Suchaten. usw.
Ich hoffe ich habs jetzt verständlich genug beschrieben, ansonsten einfach Rückfrage starten.
Anmerkung, bis jetzt wurde immer prima geholfen. Schonmal Dank bis hierher.
Gruß
Rainix (Rainer)
Anzeige
AW: Weitersuchen (erneut)
07.08.2004 13:46:26
Nepumuk
Hallo Rainer,
dann ist folgende Methode empfelenswert:


Public Sub test2()
    Dim myRange As Range, strAddress As String, bolAbbruch As Boolean
    With Worksheets("Tabelle1")
        Set myRange = .Columns(3).Find(What:="Dein_Suchbegriff", LookIn:=xlValues, LookAt:=xlWhole, After:=.Cells(Rows.Count, 3))
        If Not myRange Is Nothing Then
            strAddress = myRange.Address
            Do
'                Ausgabe in Textboxen
                If MsgBox("Weitersuchen?", 36, "Abfrage") = vbNo Then bolAbbruch = TrueExit Do
                Set myRange = .Columns(3).FindNext(myRange)
            Loop While Not myRange Is Nothing And myRange.Address <> strAddress
            If Not bolAbbruch Then MsgBox "Keine weiteren Datensätze gefunden.", 64, "Information"
        Else
            MsgBox "Keinen übereinstimmenden Datensatz gefunden", 64, "Information"
        End If
    End With
End Sub


Gruß
Nepumuk
Anzeige
AW: Weitersuchen (erneut)
07.08.2004 14:50:31
Rainix
Hallop Nepumuk,
Danke für die schnelle Antwort, werde den Code heute oder auch am Montag noch umsetzen.
Bis dahin erstmal schönes Wochenende noch.
Gruß aus Radevormwald
Rainer
AW: Weitersuchen (erneut)
09.08.2004 08:51:51
rainix
Morgen Nepumuk,
ich haben den Code soweit eingebaut, doch stehe ich jetzt hier wie der "Och vorm Berg" bei der Ausgabe der Daten in die im UserFormular angezeigten Text Boxen ?
Du hattes die 'Ausgabe in Textbox auch angedeutet, doch kann hier kein Wert angezeigt werden.
Sag doch bitte wie der Code lautet, um die gefundenen Daten in den Textboxen auch anzuzeigen.
Vielen Lieben Dank im voraus !!!
rainix
Anzeige
AW: Weitersuchen (erneut)
09.08.2004 09:01:22
Nepumuk
Hallo Rainer,
myRange ist eine Objektvariable, welche die Zelle repräsentiert, in der sich der Suchbegriff befindet. Wenn du den Wert der Zelle in Spalte A der selben Zeile in einer Textbox haben willst, dann einfach:
TextBox? = Cells(myRange.Row, 1)
Die 1 bedeutet 1. Spalte oder Spalte A
Gruß
Nepumuk
AW: Weitersuchen (erneut)
09.08.2004 09:35:34
rainix
Halo Nepumuk,
vielen Lieben dank für Deine Bemühungen, jetzt ist der Code so wie ich mir das vorgestellt habe.
>>>> SPITZE DANKE Gruß aus Wuppertal
rainix (Rainer)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige