Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Laufzeitfehler 91 bei Findnext (VBA)

39 views
Skip to first unread message

Wolfgang Hoppe

unread,
Nov 7, 2008, 3:31:01 AM11/7/08
to
Hallo zusammen,
Ich habe ein Problem:
In Tabelle 1 Spalte B kommt das Wort "NEU" einmal oder mehrmals vor. Das
Wort soll nun gesucht werden, durch eine Nummer ersetzt werden und dann in
Tabelle 2 in Spalte H kopiert werden.
Mein nachfolgender Code funktioniert, nur, dass am Ende ein Hinweis mit dem
Laufzeitfehler 91 (Objektvariable oder With-Blockvariable nicht festgelegt)
erscheint.
Kann mir jemand den Code so verändern, dass alles einwandfrei und ohne
Fehlerhinweis läuft. Vielen Dank im Voraus.

Code:
Sub Ref_finden()
Dim rFound As Range
Dim rSearch As Range
Dim sFirstAddress As String

'Set search range to column B
Range("B1").Select
Set rSearch = Intersect(ActiveSheet.UsedRange, ActiveSheet.Columns(2))
'Find the first occurance of "NEU"
Set rFound = rSearch.Find(what:="NEU", _
after:=rSearch.Cells(rSearch.Cells.Count), _
lookat:=xlWhole)
'If "NEU" was found
If Not rFound Is Nothing Then
'Store the address in a variable
sFirstAddress = rFound.Address
sLastAddress = Cells(Rows.Count, 2).End(xlUp).Row
'Start a loop
i = 1
a = 8
m = 57
Do
Worksheets("Tabelle2").Activate
Set myRange = Worksheets("Tabelle2").Cells(i, a)
Worksheets("Tabelle1").Activate
rFound.Cells.Select
Selection.Replace what:="NEU", replacement:="700BGI08000" & m
Selection.Copy
Worksheets("Tabelle2").Activate
myRange.Select
ActiveSheet.Paste
Application.CutCopyMode = False
'Set rFound = rSearch.FindNext(rFound)
Set rFound = rSearch.FindNext(rFound)
i = i + 1
m = m + 1
'Stop when Find loops back to the first cell found
Loop Until rFound.Address = sFirstAddress
End If
End Sub


--
Wolfgang

Wolfgang Hoppe

unread,
Nov 7, 2008, 4:38:00 AM11/7/08
to
Zum besseren Verständinis hier die Daten in Tabelle 1 Spalte B (Tabelle 2
iast leer):
NEU
700BGI0800050
700BGI0800051
700BGI0800052
700BGI0800053
700BGI0800054
NEU
700BGI0800055
700BGI0800056
NEU

--
Wolfgang

Michael Mueller

unread,
Nov 7, 2008, 4:51:16 AM11/7/08
to
Hi Wolfgang.


> Kann mir jemand den Code so verändern, dass alles einwandfrei und ohne
> Fehlerhinweis läuft.

Ich versuche mich mal :-)

> 'Set rFound = rSearch.FindNext(rFound)
> Set rFound = rSearch.FindNext(rFound)
> i = i + 1
> m = m + 1
> 'Stop when Find loops back to the first cell found
> Loop Until rFound.Address = sFirstAddress
> End If
> End Sub

Problem ist, das Du immer wieder neu suchst, und am Ende die Suche
verständlicherweise kein Ergebnis mehr liefert - alle Werte wurden ja
bereits ersetzt.

Daher das Do-Loop wie folgt verlassen:
Loop Until rFound Is Nothing

HTH

Michi


Wolfgang Hoppe

unread,
Nov 7, 2008, 5:00:07 AM11/7/08
to
Sooo einfach kann VBA sein.

Vielen Dank Michael und ein schönes Wochenede
--
Wolfgang

0 new messages