Microsoft Excel

Herbers Excel/VBA-Archiv

Schachteln von FIND möglich???

Betrifft: Schachteln von FIND möglich??? von: Richie
Geschrieben am: 10.09.2004 14:12:59

Hi Leute,

ist es nicht möglich den FIND Befehl zu schachteln?
Habe mal meinen Code gepastet. Der Fehler liegt darin, dass das Makro
in der Zeile " Loop While Not zelle Is Nothing And zelle.Address <> ersteAdresse" stehen bleibt und ungefähr das meldet: "Objektvariable oder With Block nicht definiert"

Kann mir jemand helfen?

With tab3.Worksheets(1).Range("A:A")
Set zelle = .Find(Cells(i, 1).Value, LookIn:=xlValues)
If Not zelle Is Nothing Then
ersteAdresse = zelle.Address
Do

' Abfangen von Value "99990000000095"
If zelle.Offset(0, 2).Value Like "9999000000*" Then
Worksheets(3).Cells(zeile, 5).Value = Right(zelle.Offset(0, 2).Value, 4)
Else
Worksheets(3).Cells(zeile, 5).Value = zelle.Offset(0, 2).Value
End If

' "0" vor Bezeichnung loeschen, wenn vorhanden
Select Case (zelle.Offset(0, 1).Value)
Case "TEST": Worksheets(3).Cells(zeile, 4).Value = "Chart"
Case "NAGEL": Worksheets(3).Cells(zeile, 4).Value = "FSI"



Case "BUCH": Worksheets(3).Cells(zeile, 4).Value = "Columns"
search = Worksheets(3).Cells(zeile, 5).Value
Do While Len(search) "hier steht ein kleiner Zeichen" 10
search = "0" & search
Loop
With bcsgen.Worksheets(3).Range("A2:A3000")
Set suche = .Find(search, LookIn:=xlValues)
If Not suche Is Nothing Then
Worksheets(3).Cells(zeile, 6).Value = suche.Offset(0, 1).Value
End If
End With

Case Else: Worksheets(3).Cells(zeile, 4).Value = zelle.Offset(0, 1).Value
End Select



Set zelle = .FindNext(zelle)
Worksheets(3).Cells(zeile, 1).Value = Cells(i, 1).Value
Worksheets(3).Cells(zeile, 2).Value = Cells(i, 2).Value
zeile = zeile + 1
Loop While Not zelle Is Nothing And zelle.Address <> ersteAdresse
End If
End With

  


Betrifft: AW: Schachteln von FIND möglich??? von: Nepumuk
Geschrieben am: 10.09.2004 22:04:57

Hallo Richie,
Find ist eine Methode, die kannst du, so lange du sie auf unterschiedliche Objekte anwendest schon ineinander schachteln. Was nicht geht, sind geschachtelte With - Anweisungen, die auf unterschiedliche Objekte verweisen. Folgenden Codeteil musst du ändern.

Aus:


With bcsgen.Worksheets(3).Range("A2:A3000")
    Set suche = .Find(Search, LookIn:=xlValues)
    If Not suche Is Nothing Then
        Worksheets(3).Cells(zeile, 6).Value = suche.Offset(0, 1).Value
    End If
End With


Machst du einfach:


Set suche = bcsgen.Worksheets(3).Range("A2:A3000").Find(Search, LookIn:=xlValues)
If Not suche Is Nothing Then Worksheets(3).Cells(zeile, 6).Value = suche.Offset(0, 1).Value


Gruß
Nepumuk