• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

On Error Goto vraag.

Status
Niet open voor verdere reacties.

chermans74

Gebruiker
Lid geworden
12 jul 2012
Berichten
32
Hallo,

Als voorbeeld de volgende macro;

Sub Macro1()
1
On Error GoTo 10
ActiveCell.Offset(1, 0).Range("A1").Select

Cells.Find(What:="hallo", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
10 MsgBox ("Foutje")
GoTo 1
End Sub


Dit werkt maar alleen voor 1 keer. De 2de keer (in het loopje) krijg ik de VBA foutmelding.
Ik zou de 2de keer ook graag de MsgBox willen zien.
Heeft iemand enig idee hoe dit werkt.

Alvast bedankt,
C Hermans.
 
De link begrijp ik niet helemaal, deze verwijst naar een eerder gestelde vraag door mij.
Dit probleem is inmiddels opgelost. De vraag die ik nu stel is mbt de error afhandeling.
Ik gebruik een macro waarbij ik in een excel sheet verschillende variabelen opzoek. Wanneer een zoekwaarde niet aanwezig is wil ik die foutmelding opvangen met een MsgBox en daarna dient de volgende zoekwaarde gezocht te worden. Wanneer deze ook niet aanwezig is zou ik weer dezelfde MsgBox willen zien, maar dan krijg ik de VBA foutmelding te zien.
Enig idee hoe ik dit kan oplossen.

Alvast bedankt,
C.hermans
 
Zo weet je tenminste zeker dat je in een eindeloze lus terecht zult komen:

Code:
Sub snb()
    On Error Resume Next
    Do
        Err.Clear
        Cells.Find("xxxxx", , xlValues, xlWhole).Activate
    Loop Until Err.Number = 0
End Sub

Zorg dus dat je eruit kunt:
Code:
Sub snb_002()
    On Error Resume Next
    Do
        Err.Clear
        Cells.Find(inputbox "zoek naar ", , xlValues, xlWhole).Activate
    Loop Until Err.Number = 0
End Sub

Algemeen adagium: vermijd 'Select' en 'Activate' in VBA.
 
Bedankt voor Uw reactie.
Wat ik eigenlijk bedoel is het volgende. In Sheet 1 zijn in kolom a een aantal waarden ingevuld.
In Sheet 2 zijn dezelfde waarden ingevuld met aanvullende informatie. Het kan ook zijn dat de waarde in Sheet 2 er niet bijstaat.
Met een macro wil ik de waarde uit Sheet 1 gebruiken om de aanvullende informatie uit Sheet 2 te zoeken.
Stel dat de waarde in Sheet 2 niet gevonden wordt (hij is simpelweg niet aanwezig) dan krijg ik een foutmelding. Deze wil ik opvangen met een Msgbox welke aangeeft "Waarde niet aanwezig").
Nadat de gebruiker op OK drukt zou de macro met de volgende waarde uit Sheet 1 verder moeten gaan zoeken. Maar wanneer de waarde weer niet gevonden wordt zou ik verwachten dat ik weer deze Msgbox zou krijgen, maar nu krijg ik een VBA foutmelding.
Mijn bijgevoegd macro dient puur als voorbeeld. Ik snap gewoon niet waarom deze macro de On Error Goto 10 actie maar 1 keer uitvoert ondanks het feit dat de na de 1ste keer Goto 1 de eerste instructie weer is On Error Goto 10.
Enig Idee.
 
Waarom de gebruiker lastig vallen met een Msgbox telkens er een waarde niet gevonden wordt? Leuk vooruitzicht als je een lijst hebt met 1000 waarden en er staan er 500 niet op het andere blad.
Code:
Sub tst()
On Error Resume Next
    For Each cl In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
        cl.Offset(, 1) = Sheets("Blad2").Columns(1).Find(cl.Value, , xlValues, xlWhole).Offset(, 1)
    Next
End Sub
 
Bedankt voor uw reactie. envoor het meedenken.
Het gaat in mijn geval om maximaal 40 waarden. Wanneer een waarde niet gevonden wordt wil ik dmw een Msgbox (waarin ik vermeld welke waarde niet gevonden is) de gebruiker informeren.
Nadat een waarde is gevonden in Sheet 2 dan zullen er een aantal acties uitvoerd moet worden dmv een macro.
Blijft toch mijn vraag waarom die On Error Goto maar 1 keer werkt. Of als u een ander idee heeft hoor ik het graag.

Groet,
C. Hermans.
 
Code:
Sub tst()
    For Each cl In Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row)
        If Sheets("Blad3").Columns(1).Find(cl.Value, , xlValues, xlWhole) Is Nothing Then
            MsgBox "De waarde " & cl.Value & " kan niet gevonden worden !"
        Else
            cl.Offset(, 1) = Sheets("Blad3").Columns(1).Find(cl.Value, , xlValues, xlWhole).Offset(, 1)
        End If
    Next
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan