Fout onderdrukken

Status
Niet open voor verdere reacties.

Atwist

Terugkerende gebruiker
Lid geworden
24 jan 2006
Berichten
1.055
Besturingssysteem
Wndows 10
Office versie
2016
Hopelijk de laatste vraag dit jaar:)

Ik probeer een fout onderdrukker te maken (eigenlijk op te forum gevonden)

Code:
rivate Sub CommandButton1_Click()
    On Error GoTo Fout
    Dim str As String
    str = "het gezochte werkblad " & bladnaam & " bestaat "
    With Sheets(bladnaam) 'deze regel zorgt voor fout bij niet bestaan,
        MsgBox str & "wel" 'indien er geen fout opgetreden is, bestaat dus de gezochte werkbladnaam.
    End With
    
    ListBox1.Clear
    Sheets("Januari").Select
    ListBox1.List = Range("A1:H30").Value

End Sub

Alleen snap ik het niet dus krijg ik het ook niet werkend.

De code moet dus kijken of werkblad Januari bestaat zo niet dan niets doen en een melding laten zien.

Heeft iemand nog even tijd??
 
Die onerror goto fout betekent dat je bij een fout naar label Fout springt.
Dat label moet er dan wel zijn uiteraard.
Code:
Private Sub CommandButton1_Click()
    On Error GoTo Fout
    Dim str As String
    str = "het gezochte werkblad " & bladnaam & " bestaat "
    With Sheets(bladnaam) 'deze regel zorgt voor fout bij niet bestaan,
        MsgBox str & "wel" 'indien er geen fout opgetreden is, bestaat dus de gezochte werkbladnaam.
    End With
    
    ListBox1.Clear
    Sheets("Januari").Select
    ListBox1.List = Range("A1:H30").Value
    Exit Sub

Fout:
    'Code voor de foutafhandeling
    'Bijvoorbeeld via het object Err
    msgbox Err.Description
End Sub

Let ook op de extra regel:
Exit Sub.
die ik heb toegevoegd.
Als die daar niet staat wordt de code bij label Fout altijd uitgevoerd.

In plaat van OnError Goto Fout kun je ook OnError Resume Next gebruiken.
Dit zorgt ervoor dat ook wanneer er een fout optreed er toch wordt doorgegaan met de volgende regel in de code.
Uiteraard is er dan veel lastiger achter te komen wat er fout gaat als de fout een onverwachte is en ogenschijnlijk alles gewoon goed gaat omdat VBA dan geen foutmelding geeft.
 
Laatst bewerkt:
Ed

Ik had een
Code:
Private Sub Fout()
Listbox1.clear
MsgBox "Deze maand is nog niet aanwezig"
End Sub
Gemaakt

Maar had niet door dat het in dezelfde SUB moest staan.

Werkt niet erg mooi.

Wederom mijn grootste dank :thumb::thumb::thumb::thumb:
 
He kan overigens wel wanneer je een algemene foutafhandeling wilt maken.
Dat kan dan allemaal in 1 Sub staan die je aanroept bij het label Fout.
Zoals alphamax al zei, het is maar net hoe je wilt gaan van makkelijk naar moeilijker.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan