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