• 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.

Na een fout, terug opnieuw beginnen

Status
Niet open voor verdere reacties.

h.van.bouwel

Gebruiker
Lid geworden
20 jun 2004
Berichten
51
De code hieronder werkt. Het is vrij eenvoudig, "intweekrapport" moet een getal bevatten. Wanneer men iets anders ingeeft dan wordt de fout onderschept door "Moet_getal_zijn. Maar wanneer dit gebeurd, gaat het script verder waar het gebleven is en dit is nu juist wat niet mag. Als de fout is onderschept door "Moet_getal_zijn" zo het terug van begin af moeten beginnen lopen.

Iemand enig idee, hoe ik dan die verwijzing moet maken?

Alvast bedankt voor het antwoord.


Sub Test()
'
on Error GoTo sub_error

strtitel = "Weekrapport"
strprompt = "Geef de trainingsweek in:" & Chr(10) & Chr(13)
strprompt = strprompt & "U hoeft enkel het getal in te geven." & Chr(10) & Chr(13)
intweekrapport = InputBox(strprompt, strtitel)

On Error GoTo Moet_getal_zijn

If intweekrapport > 10 Then
strError1 = "U hebt een getal ingegeven dat groter is dan 10" & Chr(10) & Chr(13)
strError1 = strError1 & "Er zijn maar 10 traingingsweken" & Chr(10) & Chr(13)
strError1 = strError1 & "Geef het correct weekcijfer in."
intError1 = MsgBox(strError1, 0, strErrorTitel)
strtitel = "Weekrapport"
strprompt = "Geef de trainingsweek in:" & Chr(10) & Chr(13)
strprompt = strprompt & "U hoeft enkel het getal in te geven." & Chr(10) & Chr(13)
strprompt = strprompt & "Geef een getal tussen 1 & 10"
intweekrapport = InputBox(strprompt, strtitel)
End If


Exit_sub:
Exit Sub
'
sub_error:
MsgBox Error
Resume Exit_sub

Moet_getal_zijn:
If Err = 13 Then
MsgBox "Moet getal zijn"
Else
GoTo sub_error
End If
Resume

End sub
 
Tip: De code 'Chr(10) & Chr(13)' kun je vervangen door de constante 'vbCrLf'. Scheelt weer beetje.

Ik heb in de code ook de declaratie van variabelen opgenomen. Is netter.

De variabel 'intWeekrapport' heb ik veranderd in 'varWeekrapport' (een Variant). Kan foutlopen als de gebruiker op 'Cancel' drukt ipv een getal invoert.

Met het _-teken aan het einde van een regel, kun je op de volgende regel gewoon doorgaan. _-teken heet in het Engels 'line-continuation-character'. Het doet wat het zegt.

Ik heb een boolean toegevoegd (blnOK) en dit is de test voor doorgaan of niet. De vraag van goed of slecht zit in een 'Do Until - Loop'. Pas als de ingevoerde waarde goed is, loopt de code verder. Op deze manier geen foutafhandeling nodig.

Sub Weeknr()

Dim strTitel As String
Dim strPrompt As String
Dim varWeekrapport As Variant
Dim blnOK As Boolean

strTitel = "Weekrapport"
strPrompt = "Geef de trainingsweek in:" & vbCrLf _
    & "U hoeft enkel het getal in te geven."

blnOK = False
Do Until blnOK
  varWeekrapport = InputBox(strPrompt, strTitel)
  If Not IsNumeric(varWeekrapport) Then
    strPrompt = "U hebt geen numerieke waarde ingevuld."
    MsgBox strPrompt, vbOKOnly, "Fout: " & strTitel
  ElseIf varWeekrapport > 10 Then
    strPrompt = "U hebt een getal ingegeven dat groter is dan 10." & vbCrLf _
                  & "Er zijn maar 10 traingingsweken"
    MsgBox strPrompt, vbOKOnly, "Fout: " & strTitel
  Else
    blnOK = True
  End If
Loop
  
Range("A1") = varWeekrapport

End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan