Suchen und ersetzen mit Makro

Hallo Zusammen
Ich habe ein Makro, dass eine bestimmte Spalte absuchen soll und dort gewissen Wörter durch andere ersetzen soll.
(Es muss der ganze Inhalt der Zelle ersetzt werden, somit fällt die „Replace-Funktion“ von Excel leider aus)

Ich habe nun mal folgendes Programmiert:

_Do While b

Nun habe ich folgendes Problem:
Sobald in dem gewählten Bereich nichts zu finden ist. Wirft er eine Errormeldung. Ich möchte diese aber auffangen, weil ich danach gleich ein anderes Wort suchen möchte.
Ich weiss, dass es bie Java die Möglichkeit gibt, Exceptions zu „catchen“. Geht das irgendwie auch mit VBA?

Danke für die Hilfe

Jochen11_

Ich habe ein Makro, dass eine bestimmte Spalte absuchen soll
und dort gewissen Wörter durch andere ersetzen soll.
(Es muss der ganze Inhalt der Zelle ersetzt werden, somit
fällt die „Replace-Funktion“ von Excel leider aus)

Sobald in dem gewählten Bereich nichts zu finden ist. Wirft er
eine Errormeldung. Ich möchte diese aber auffangen, weil ich
danach gleich ein anderes Wort suchen möchte.

Hallo Jochen,

(in der Hilfe zu „Find“ steht ein Beispiel, ich habe es nur abgewandelt):

Sub nn()
Dim rngSuch As Range, strAdresse As String
With Worksheets(1).Range("E5:E517")
 Set rngSuch = .Find(What:="tray", LookIn:=xlFormulas, LookAt:=xlPart)
 If Not rngSuch Is Nothing Then
 strAdresse = rngSuch.Address
 Do
 rngSuch.Value = "Tray with"
 Set rngSuch = .FindNext(rngSuch)
 Loop While Not rngSuch Is Nothing And rngSuch.Address strAdresse
 End If
End With
End Sub

Gruß
Reinhard

versuche es mal mit Try- Catch

Hallo Reinhard
DAnke für den tollen Tipp. Das ist echt eine elegante Lösung.
Doch leider funktioniert es nicht in allen Fällen. :-S

Hier das Beispiel:

a = 1
Do
Select Case a

Case 1

With Range(„E5:E517“)
Set rangeSuche = .Find(What:=„solia“, LookIn:=xlFormulas, LookAt:=xlPart)
If Not rangeSuche Is Nothing Then

strAdresse = rangeSuche.Address
Do

rangeSuche.Value = „Tray with“
Set rangeSuche = .FindNext(rangeSuche)

Loop While Not rangeSuche Is Nothing And rangeSuche.Address strAdresse

End If
End With

Case 2

With Range(„E5:E517“)
Set rangeSuche = .Find(What:=„foil“, LookIn:=xlFormulas, LookAt:=xlPart)
If Not rangeSuche Is Nothing Then

strAdresse = rangeSuche.Address
Do

rangeSuche.Value = „Foil with“
Set rangeSuche = .FindNext(rangeSuche)

Loop While Not rangeSuche Is Nothing And rangeSuche.Address strAdresse

End If
End With
End Select
a = a + 1
Loop Until a > 2

Jetzt gibt er mir beim Case 1 immer eine Error-Meldung (Run-time error ‚91‘:
Object variable or With block variable not set) aus.

An was liegt das, bzw. wie kann ich das umgehen?

Danke für die Hilfe

Doch leider funktioniert es nicht in allen Fällen. :-S
Jetzt gibt er mir beim Case 1 immer eine Error-Meldung
(Run-time error ‚91‘:
Object variable or With block variable not set) aus.

An was liegt das, bzw. wie kann ich das umgehen?

Hallo Jochen,

kann ich nicht nachvollziehen, bei mir kommt kein Fehler.
Unabhängig davon Code mal umgebaut.

Sub tt()
Dim a As Byte, rangeSuche As Range, strAdresse As String
For a = 1 To 2
 With Range("E5:E517")
 Set rangeSuche = .Find(What:=IIf(a = 1, "solia", "foil"), LookIn:=xlFormulas, LookAt:=xlPart)
 If Not rangeSuche Is Nothing Then
 strAdresse = rangeSuche.Address
 Do
 rangeSuche.Value = IIf(a = 1, "Tray with", "Foil with")
 Set rangeSuche = .FindNext(rangeSuche)
 Loop While Not rangeSuche Is Nothing And rangeSuche.Address strAdresse
 End If
 End With
Next a
End Sub

Gruß
Reinhard

Datei hochladen bei w-w-w
Hallo Jochen,

solange noch keiner auf deinen anderen Beitrag geantwortet hat, kannst du ihn selbst löschen, mach das lieber. Ist besser weil da deine Emailadresse steht.

Lade die Mappe hoch mit file-upload o.ä., s. FAQ:2606

Gruß
Reinhard

Hey Reinhard
Danke für den Tipp.

Hier den Link:
http://www.file-upload.net/download-3532785/Test.xls…

Danke

http://www.file-upload.net/download-3532785/Test.xls…

hallo Jochen,

Problematik ist an sich gelöst.
Ich muß das nur noch umsetzen was ich erfahren habe auf Nachfrage woanders.
Aber das war eben erst und jetzt bin ich dann doch zu müd das jetzt zu tun.

Und der Grund warum ich bei Besseren nachgefragt habe ist folgender.
Ich habe deinen und meinen Code getestet an Beispieldaten in E wo mal die Suchwörter drin staneden oder auch nicht.
Quasi nie eine Fehlermeldung.

Bei deiner Mappe schon. Nach dem Öffnen und Codedurchlauf kommt die Fehlermeldung. Beim zweiten Aufruf des Codes aber nicht. Sowas irritiert mich natürlich.

Egal, mir wurde gesagt wodran das liegt und ich setz das am WE um.

Gruß
Reinhard

http://www.file-upload.net/download-3532785/Test.xls…

Hallo Jochen,

Sub test2()
Dim a As Byte, rngSuche As Range, strAdresse As String, rngBereich As Range
With Range("E17:E517")
 For a = 1 To 2
 Set rngBereich = Nothing
 Set rngSuche = .Find(What:=IIf(a = 1, "solia", "foil"), LookIn:=xlFormulas, LookAt:=xlPart)
 If Not rngSuche Is Nothing Then
 strAdresse = rngSuche.Address
 Do
 If Not rngBereich Is Nothing Then
 Set rngBereich = Union(rngBereich, rngSuche)
 Else
 Set rngBereich = rngSuche
 End If
 Set rngSuche = .FindNext(rngSuche)
 Loop While Not rngSuche Is Nothing And rngSuche.Address strAdresse
 End If
 rngBereich.Value = IIf(a = 1, "Tray with", "Foil with")
 Next a
End With
End Sub

Gruß
Reinhard