2013-05-20 4 views
-1
If CheckContractStart(MoreMemoryBlock(i)) <> "" Then 
    Cells(RowCount + i, 3).Value = Format(DateValue(CheckContractStart(MoreMemoryBlock(i))), "dd MMM yyyy") 
Else 
    Cells(RowCount + i, 3).Value = "Missing" 
End If 

Pour l'expression ci-dessus,Comment faire pour que le code suivant continue en erreur?

Je ne lance le format() quand il est pas vide. Cependant, je me suis rendu compte que parfois le contenu ne peut pas être vide mais contenu contenu non formatable tel que "commentaires" ou peut-être même typos de date comme manquant /. Donc, je me demande simplement s'il existe un moyen de continuer le code en cas d'erreur et de retourner simplement un msgbox au lieu de s'arrêter tout à fait?

Répondre

2

Enveloppez votre code avec On Error Resume Next ... On Error GoTo 0

On Error Resume Next 
If CheckContractStart(MoreMemoryBlock(i)) <> "" Then 
    Cells(RowCount + i, 3).Value = Format(DateValue(CheckContractStart(MoreMemoryBlock(i))), "dd MMM yyyy") 
Else 
    Cells(RowCount + i, 3).Value = "Missing" 
End If 
On Error GoTo 0 
2

Oui. En VBA, vous pouvez utiliser les mots-clés On Error.

Ce ne sont que deux utilisations, mais ils sont pertinents à votre question:

1) On Error Goto Label Cela ira à Label que vous définissez en écrivant cette étiquette où vous voulez que votre code pour reprendre l'exécution après une erreur en le suivant avec un point-virgule Label:.

2) On Error Resume Next qui ignorera complètement l'erreur. Vous voudrez peut-être faire un peu de vérification des erreurs pour rendre votre code plus stable, mais c'est parfois nécessaire et/ou utile pour le faire, même si cela peut être dangereux.

Questions connexes