Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Find-Schleife

Forumthread: Find-Schleife

Find-Schleife
22.05.2008 19:59:05
Christian
Servus Forum,
ich werd noch verrückt!
kann mir bitte jemand sagen, warum dieses makro nicht funktioniert:

Sub t()
Dim lngletzte As Long, i As Long, strSuchbegriff As String
Dim rSuche As Range, rFinde As Range, strErste As Range, lngReihe As Long
lngletzte = IIf(IsEmpty(Cells(Rows.Count, 4)), Cells(Rows.Count, 4).End(xlUp).Row, Rows.Count)
Set rFinde = Range("A1:A65536")
For i = 1 To lngletzte
strSuchbegriff = Cells(i, 4).Value
Set rSuche = rFinde.Find(What:=strSuchbegriff, LookIn:=xlValues, LookAt:=xlWhole,  _
SearchOrder:=xlByColumns, SearchDirection:=xlNext)
If Not rSuche Is Nothing Then
strErste = rSuche.Address
Do
lngReihe = rSuche.Row
Range(Cells(lngReihe, 1), Cells(lngReihe, 3)).Copy Sheets(2).Range("A65536").End(xlUp). _
_
_
Offset(1, 0)
Set rSuche = rFinde.FindNext(rSuche)
Loop While Not rSuche Is Nothing And strErste  rSuche.Address
End If
Next i
Set rFinde = Nothing
Set rSuche = Nothing
End Sub


Ich bekomme jedesmal Fehler91 (Withblockvariable).
Wenn ich die Do-Schleife rausnehme (Makro t) geht es, aber ich seh den Fehler nicht .
Hier noch ne kleine Beispieldatei:
https://www.herber.de/bbs/user/52560.xls
Gruß
Christian

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Find-Schleife
22.05.2008 20:07:24
Josef
Hallo Christian,
Dim strErste As String
ausserdem würde ich es so machen.
Sub t()
Dim lngletzte As Long, i As Long, strSuchbegriff As String
Dim rSuche As Range, rFinde As Range, strErste As String, lngReihe As Long

lngletzte = IIf(IsEmpty(Cells(Rows.Count, 4)), Cells(Rows.Count, 4).End(xlUp).Row, Rows.Count)

Set rFinde = Range("A1:A65536")
For i = 1 To lngletzte
    strSuchbegriff = Cells(i, 4).Value
    If strSuchbegriff <> "" Then
        Set rSuche = rFinde.Find(What:=strSuchbegriff, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext)
        If Not rSuche Is Nothing Then
            strErste = rSuche.Address
            Do
                lngReihe = rSuche.Row
                Range(Cells(lngReihe, 1), Cells(lngReihe, 3)).Copy Sheets(2).Range("A65536").End(xlUp).Offset(1, 0)
                Set rSuche = rFinde.FindNext(rSuche)
            Loop While Not rSuche Is Nothing And strErste <> rSuche.Address
        End If
    End If
Next i

Set rFinde = Nothing
Set rSuche = Nothing
End Sub


Gruß Sepp



Anzeige
AW: Danke Sepp, der berühmte...
22.05.2008 20:13:51
Christian
...Wald, den man vor lauter Bäumen nicht sieht.
Habe ich glatt übersehen, dass ich die strErste als Range deklariert hatte, dabei steht extra str... dabei.
das mit den Leerzellen ist eine gute Anmerkung.
Ich glaube, es wird Zeit, dass ich aufhöre und mich gemütlicheren Dingen widme.
Gruß aus Bayern
Christian

Anzeige
AW: Falsche Variablendeklaration
22.05.2008 20:10:41
Daniel
Hi
strErste ist als RANGE deklariert, wahrscheinlich meinst du aber STRING
Gruß, Daniel

AW: Klar mein ich String, danke, o.w.T
22.05.2008 20:14:43
Christian
.
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige