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

zu weiteren gleichen Suchbegriff nacheinander springen

zu weiteren gleichen Suchbegriff nacheinander springen
05.11.2023 15:35:49
Andreas
Ich habe diesen Code unten schon mal soweit gebracht, das mit Klick auf den CommandButton zum gleichen Eintrag aus der Combobox in das aktive Blatt"Bearbeiten" gesprungen wird.

Nun möchte ich gern, das bei jeden weiteren Klick auf den selben CommandButton, zum nächsten gleichen (letzten Suchbegriff) aus Combobox weiter zu diesem im Blatt "Bearbeiten gesprungen wird, sofern es einen gibt.

Würde eventuell den "Suchbegriff" in einer Hilfstabelle speichern, um diesen sozusagen zwischengespeichert zur Abfrage zur verfügung zu haben.

Hier erst mal der Code
Private Sub CommandButton20147_Click()

'Gehe ZurZeile mit Inhalt aus ComboBox ()

Dim Suchbegriff As String
Dim ZielZelle As Range
Dim Arbeitsblatt As Worksheet

Suchbegriff = ComboBox00094X.Value

Set Arbeitsblatt = ThisWorkbook.Sheets("Bearbeiten")
Set ZielZelle = Arbeitsblatt.Columns(2).Find(What:=Suchbegriff, LookIn:=xlValues, LookAt:=xlWhole)

If Not ZielZelle Is Nothing Then
' Zeile mit dem gefundenen Wert auswählen
ZielZelle.EntireRow.Select
' werde in "C"aktiv
With Cells(ActiveCell.Row + 1, 2).Value
Cells(ActiveCell.Row, 3).Select
End With

Else
MsgBox "keine Übrereinstimmung gefunden."
End If


End Sub


Befüllt wird die Combobox unter
Private Sub UserForm_Initialize()


sbFillCmbAscending

End Sub


mit diesem Code, wobei dabei dies nur OHNE "Option Explicit" funktioniert
Sub sbFillCmbAscending()

Dim lloRow As Long, liIdx As Integer, larstrCmb() As String, lboExist As Boolean
Dim vntListe As Variant
ReDim larstrCmb(0)

With Sheets("Bearbeiten")
vntListe = .Range(.Cells(1, 2), .Cells(.Rows.count, 2).End(xlUp)).Value
End With

For lloRow = 1 To UBound(vntListe, 1)
For liIdx = 0 To UBound(larstrCmb)
If vntListe(lloRow, 1) = larstrCmb(liIdx) Then
lboExist = True
Exit For
End If
Next
If lboExist = True Then
lboExist = False
Else
larstrCmb(UBound(larstrCmb)) = vntListe(lloRow, 1)
ReDim Preserve larstrCmb(UBound(larstrCmb) + 1)
End If
Next

On Error Resume Next ' sollte ein Fehler auftreten-

ReDim Preserve larstrCmb(UBound(larstrCmb) - 1)


For i = 0 To UBound(larstrCmb)
For j = i + 1 To UBound(larstrCmb)
If larstrCmb(i) > larstrCmb(j) Then
temp = larstrCmb(i)
larstrCmb(i) = larstrCmb(j)
larstrCmb(j) = temp
End If
Next j
Next i


For liIdx = 0 To UBound(larstrCmb)
UserForm10.ComboBox00094X.AddItem larstrCmb(liIdx)
Next
End Sub


Wie könnte dazu ein Code aussehen?
Gern auch mit einen anderen Aufbau. Danke schon mal.

Grüße Andreas

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zu weiteren gleichen Suchbegriff nacheinander springen
05.11.2023 16:52:45
RPP63
Moin!
Ich mache sowas mit Strg+f (und Weitersuchen).
Das könntest Du mal mit dem Rekorder aufzeichnen.
(.find und .findnext)

Gruß Ralf
AW: zu weiteren gleichen Suchbegriff nacheinander springen
06.11.2023 08:13:49
daniel
HI
im Prinzip so, ergänze dein .Find so:

Set ZielZelle = Arbeitsblatt.Columns(2).Find(What:=Suchbegriff, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole)

Die Suche beginnt immer NACH der Zelle die bei AFTER angegeben ist. Wenn du so die Selektion auf er aktiven Zelle belässt, sollte dann beim nächsten Klick auch der nächste Wert gefunden werden.

Gruß Daniel

AW: zu weiteren gleichen Suchbegriff nacheinander springen
05.11.2023 18:37:23
Piet
Hallo

wenn sich dein Code an Option Explicit stört, stimmt wahrscheinlich eine Dim Answeisung mit der Variablen nicht überein.
Frage ist, was willst du nach dem erreichen der Zelle machen?? Willst du sie direkt bearbeiten??
Sich nur die Werte anschauen geht mit einer Do Loop Schleife, s. unten den Beispiel Code.

In deinem Code stecken so einige Denkfehler und Syntacsfehler. Warum selektierst du eine ganze Zeile, wenn du sofort danach eine Zelle in Spalte C selektierst??
Am Ende einer With Klammer kann man keinen Befehl wie Select oder Value setzen. Danmit funktioniert With nicht!
Wenn du es aber so programmiert hast, was wolltest du damit erreichen?? Welche Aktion kommt nach - Cells(ActiveCell.Row, 3).Select
Wenn du da keine MsgBox setzt rennt der Code ohne zu stoppen weiter. Welche Aktion soll in der gefundenen Zelle/n erfolgen??
Da sind noch jede Menge ungeklärter Fragen offen.

mfg Piet

  • If Not ZielZelle Is Nothing Then
    Adr1 = ZielZelle.Address '1. Adresse merken
    Do 'sucht weiter, bis 1. Adresse wieder erreicht wird!
    ' Zeile mit dem gefundenen Wert auswählen
    ZielZelle.EntireRow.Select
    ' werde in "C"aktiv
    Cells(ZielZelle.Row, 3).Select
    ' Was geschieht hier ???
    MsgBox Cells(ZielZelle.Row, 3)
    'nach Aktion weitersuchen
    Set ZielZelle = Arbeitsblatt.Columns(2).FindNext(ZielZelle)
    Loop Until ZielZelle.Address = Adr1
  • Anzeige
    AW: zu weiteren gleichen Suchbegriff nacheinander springen
    05.11.2023 20:26:16
    Andreas
    Hallo Piet,,
    danke fürs schauen und helfen.

    Das stimmt natürlich.... eigentlich reicht es, die Zelle in Spalte C zu selektieren, wie du bereits geändert hast.
    Dort wo der erste Eintrag in "B" gefunden wird, soll wenn nötig direkt bearbeitet werden.
    Das kann ändern, löschen sein, was im Bereich B:L erfolgt.
    Wenn nicht beareitet wird, dann weiter suchen- falls noch gleiche Werte in "B" zu finden sind.
    Wenn kein Wert in"B" mehr übereinstimmt- Sub beenden.
    Gern das ganze mit "MSG "Box". Wie schon vorgeschlagen- Inhalt aus "C" in Msg Box anzeigen; Button "Weiter" dann zum nächsten Eintrag mit dem gleichen "Suchbegriff" oder Button "Bearbeiten" dann Zeile "C" bearbeiten...
    Die MSG Box offen lassen- für "Weiter" - wenn gewünscht und Button "Fertig" schließt das ganze. Das kann aber auch mit dem roten Kreuz erledigt werden.

    Gruß Andreas




    Anzeige
    AW: zu weiteren gleichen Suchbegriff nacheinander springen
    06.11.2023 23:56:15
    Piet
    Hallo

    dieses Makro geht über eine EingabeBox. Damit kann man alle Spalten von B bis L bearbeiten, Text oder Zahlen eingeben.
    Mit Space geht der Cursor immer um eine Spalte nach Rechts, mit "" kann man zur Spalte B zurückspringen.
    Mit "#" beendet man die Eingabe zum weitersuchen, mit "##" beendet man das Makro mit Exit Sub-

    Ich bin mal gespannt wie dir diese Lösung gefällt??

    mfg Piet

  • Sub Test()
    
    Dim Wert As Variant, Suchbegriff

    Set ZielZelle = Arbeitsblatt.Columns(2).Find(What:=Suchbegriff, LookIn:=xlValues, LookAt:=xlWhole)
    If Not ZielZelle Is Nothing Then
    Adr1 = ZielZelle.Address
    Do 'sucht weiter, bis 1. Adresse wieder erreicht wird!
    ' Zeile mit dem gefundenen Wert auswählen
    ZielZelle.EntireRow.Select
    neu: ' werde in "C"aktiv
    For i = 0 To 10
    ZielZelle.Offset(0, i).Select
    Wert = ZielZelle.Offset(0, i)
    Wert = InputBox("Zum bearbeiten bitte Text eingeben" & vbLf & "Space = nächste Spalte anspringen" & vbLf & "# = Eingabe beenden - weitersuchen" & vbLf & "## = Exit Sub", , Wert)
    If Wert = "#" Or Wert = Empty Then Exit For
    If Wert = "##" Then Exit Sub
    If Wert = "" Then GoTo neu
    ZielZelle.Offset(0, i) = Wert
    Next i
    ZielZelle.Select
    'nach Aktion weitersuchen
    Set ZielZelle = Arbeitsblatt.Columns(2).FindNext(ZielZelle)
    If ZielZelle Is Nothing Then Exit Do
    Loop Until ZielZelle.Address = Adr1
    End If
    End Sub
  • Anzeige
    AW: Super
    07.11.2023 06:41:19
    Andreas
    Hallo Piet,

    das ist natürlich ein ganz ordentlicher Ablauf. Dies werde ich nutzen.

    Ich arbeite daran. Danke.

    Gruß Andreas
    AW: Freut mich oWt
    07.11.2023 13:40:47
    Piet
    ...

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige