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

Find - Methode Fehler

Find - Methode Fehler
Henrik
Hallo!
Ich habe eine Userform mit einem Textfeld (tbsuche, dort wird der Suchtext eingetragen) und einem Button "weitersuchen", der Button ruft die unten angegebene Funktion auf:

Function weitersuchen()
Dim c As Range
Dim firstAddress
anfang:
Set c = Range("A:I").Find(What:=tbsuche, after:=ActiveCell, LookIn:=xlValues _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If c Is Nothing Then
cbweitersuchen.Caption = "Kein Fund!"
Exit Function
End If
If Cells(c.Row, 3).Font.Color  192 Then
c.Activate
GoTo anfang
End If
If Not c Is Nothing Then
c.Activate
ComboBox1 = Cells(c.Row, 3)
End If
End Function

Funktioniert sehr gut, aber das Problem ist: Wenn es den Suchbegriff in den Zellen Cells(c.Row, 3).Font.Color = 192 nicht gibt, sondern nur in Cells(c.Row, 3).Font.Color 192
dann macht Excel eine endlosschleife und aktiviert nacheinander die Suchstellen.
Das ist mir auch klar geworden, aber was kann ich jetzt dagegen tun?
Vielen Dank für euer Bemühen!
Henrik

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Find - Methode Fehler
04.05.2010 20:16:20
Hajo_Zi
Hallo Henrik,
Du Weist der Funktion am Ende nichts zu.
Ich würde nicht mit Goto arbeiten.
Mal als Ansatz.
Sub Find_mehrmals()
'* H. Ziplies                                    *
'* 24.11.08                                      *
'* erstellt von HajoZiplies@WEB.de              *
'* http://Hajo-Excel.de
Dim RaFound As Range
Dim FirstAddress As String
Dim Search As String
Dim LoLetzte As Long
Dim LoI As Long
Dim ByMldg As Byte
Search = Worksheets("Tabelle2").Range("A1")
With Worksheets("Tabelle1")
LoLetzte = IIf(IsEmpty(.Range("A65536")), .Range("A65536").End(xlUp).Row, 65536)
'   von Peter Haserodt
Set RaFound = .Range("A1:A" & LoLetzte).Find(Search, .Range("A" & LoLetzte), ,  _
xlWhole, , xlNext)
If RaFound Is Nothing Then Exit Sub  'falls nicht gefunden wird sub verlassen
If MsgBox("Gefunden in Zelle " & RaFound.Address(0, 0) & " ist dies richt richtige  _
Zelle !!!" _
, vbYesNo + vbQuestion, "Abfrage") = 6 Then
RaFound.Interior.ColorIndex = 3
Else
FirstAddress = RaFound.Address
Do
Set RaFound = .Range("A1:A" & LoLetzte).FindNext(RaFound)
If RaFound.Address = FirstAddress Then Exit Sub
If MsgBox("Gefunden in Zelle " & RaFound.Address(0, 0) & " ist dies richt  _
richtige Zelle !!!" _
, vbYesNo + vbQuestion, "Abfrage") = 6 Then
RaFound.Interior.ColorIndex = 3
Exit Do
End If
If RaFound.Row = LoLetzte Then Exit Do
LoI = LoI + 1
Loop
End If
End With
Set RaFound = Nothing
End Sub

Anzeige
AW: Find - Methode Fehler
04.05.2010 22:41:29
Henrik
Okay Hajo, danke erstmal ich probier das aus und gebe morgen Rückmeldung.
Viele Grüße!
AW: Find - Methode Fehler
05.05.2010 08:58:50
Henrik
Also ich habs mir angepasst und bei jedem click auf den Button "Weiter" ruft er folgendes auf:

Function weitersuchen()
'* H. Ziplies                                    *
'* 24.11.08                                      *
'* erstellt von HajoZiplies@WEB.de              *
'* http://Hajo-Excel.de
Dim RaFound As Range
Dim FirstAddress As String
Dim LoLetzte As Long
Dim LoI As Long
Dim ByMldg As Byte
With ActiveSheet
LoLetzte = IIf(IsEmpty(.Range("A65536")), .Range("A65536").End(xlUp).Row, 65536)
Set RaFound = .Range("1:" & LoLetzte + 10).Find(tbsuche, ActiveCell, xlValues, xlPart,  _
xlByRows, xlNext, False, False)
If RaFound Is Nothing Then
cbweitersuchen.Caption = "Kein Fund!"
ComboBox1 = ""
Cells(1, 1).Activate
Exit Function  'falls nicht gefunden wird sub verlassen
Else
FirstAddress = RaFound.Address
Do
Set RaFound = .Range("1:" & LoLetzte + 10).FindNext(RaFound)
If RaFound.Address = FirstAddress Then
cbweitersuchen.Caption = "Kein Fund!"
ComboBox1 = ""
Cells(1, 1).Activate
Exit Function
End If
If Cells(RaFound.Row, 3).Font.Color = 192 Then
ComboBox1 = Cells(RaFound.Row, 3)
RaFound.Activate
Exit Do
End If
If RaFound.Row = LoLetzte Then
cbweitersuchen.Caption = "Kein Fund!"
ComboBox1 = ""
Cells(1, 1).Activate
Exit Do
End If
Loop
End If
End With
End Function
Das geht jetzt sehr gut, wenn ich tbsuche ändere (also meinen Suchtext), dann rufe ich ebenfalls die function auf, dann sucht er schon bei der eingabe :-)
Was leider nicht zu gehen scheint, ist wenn ich mehrere Worte suchen will, die selbstverständlicherweise auch in einer Zelle zusammen enthalten und hintereinander sind. Dann geht es nur manchmal !?! Eigenartig.
auf jeden fall vielen dank für die Hilfe!
Anzeige
AW: Find - Methode Fehler
05.05.2010 09:15:08
Hajo_Zi
Hallo Henrik,
verstehe ich das richtig Du gibst mehrere Wörter ein und willst prüfen ob eins in der Zelle ist. Das geht nicht. Es werden die Wörter die Du eingibst insgesamt geprüft ob die irgendwo in eineer Zellen enthalten sind.
Gruß Hajo
AW: Find - Methode Fehler
05.05.2010 09:15:49
Henrik
Okay noch eine kleine Änderung, dann klappt es bei mir auch mit mehreren zusammenhängenden Worten:

Function weitersuchen()
'* H. Ziplies                                    *
'* 24.11.08                                      *
'* erstellt von HajoZiplies@WEB.de              *
'* http://Hajo-Excel.de
Dim RaFound As Range
Dim FirstAddress As String
Dim LoLetzte As Long
Dim LoI As Long
Dim ByMldg As Byte
With ActiveSheet
LoLetzte = IIf(IsEmpty(.Range("A65536")), .Range("A65536").End(xlUp).Row, 65536)
Set RaFound = .Range("1:" & LoLetzte + 10).Find(tbsuche, ActiveCell, xlValues, xlPart,  _
xlByRows, xlNext, False, False, False)
If RaFound Is Nothing Then
cbweitersuchen.Caption = "Kein Fund!"
ComboBox1 = ""
Cells(1, 1).Activate
Exit Function  'falls nicht gefunden wird sub verlassen
Else
If Cells(RaFound.Row, 3).Font.Color = 192 Then
ComboBox1 = Cells(RaFound.Row, 3)
RaFound.Activate
Exit Function
End If
FirstAddress = RaFound.Address
Do
Set RaFound = .Range("1:" & LoLetzte + 10).FindNext(RaFound)
If RaFound.Address = FirstAddress Then
cbweitersuchen.Caption = "Kein Fund!"
ComboBox1 = ""
Cells(1, 1).Activate
Exit Function
End If
If Cells(RaFound.Row, 3).Font.Color = 192 Then
ComboBox1 = Cells(RaFound.Row, 3)
RaFound.Activate
Exit Do
End If
If RaFound.Row = LoLetzte Then
cbweitersuchen.Caption = "Kein Fund!"
ComboBox1 = ""
Cells(1, 1).Activate
Exit Do
End If
Loop
End If
End With
End Function
gruß!
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige