Formules voorzien van een foutcontrole
Pagina's in dit artikel
Eerste versie
Het gebeurt regelmatig, dat ik een bereik met formules heb dat op zich goed werkt, maar dat een foutcontrole nodig heeft, bijvoorbeeld om delen door nul te voorkomen. Neem bijvoorbeeld de volgende situatie:

Als cel A3 geen data bevat of een nul, dan wordt het resultaat in cel C3
#DEEL/0!
Als je dit soort fouten niet wilt laten zien, dan is de oplossing eenvoudig: test of de celinhoud waardoor wordt gedeeld gelijk is aan nul:
=ALS(A3=0;"";B3/A3)
Maar ik heb meestal veel gecompliceerdere formules, waarbij de fout regelmatig niet door slechts 1 cel wordt veroorzaakt. In dat geval wil ik de hele formule in een foutcontrole verpakken. Ik heb daarom een kleine VBA routine geschreven, die het vereenvoudigt om de formule van meerdere cellen van een foutcontrole te voorzien. Hier is de eerste versie van een dergelijke routine:
Sub ChangeFormulas()
Dim oCell As Range
Dim sFormula As String
Dim sInput As String
Static sFormulaTemplate As String
If sFormulaTemplate = "" Then
sFormulaTemplate =
"=IF(ISERROR(_form_),"""",_form_)"
End If
sInput = InputBox("Voer basis formule in", ,
sFormulaTemplate)
If sInput = "" Then Exit Sub
sFormulaTemplate = sInput
For Each oCell In Selection
sFormula = Replace(sFormulaTemplate,
"_form_", Right(oCell.Formula, Len(oCell.Formula) - 1))
oCell.Formula = sFormula
Next
End Sub
Hoe werkt dit?
Selecter de cellen waar de foutcontrole gewenst wordt. Run dan de bovenstaande subroutine. Een Input box wordt weergegeven, die een standaard sjabloon toont waarmee de bestaande formule zal worden aangepast (In Engelse notatie):
=IF(ISERROR(_form_),"",_form_)
In bovenstaand voorbeeld zal overal waar de tekst "_form_" staat, de huidige formule die in de cel staat worden geplaatst. Bewerk dit sjabloon en klik OK.
Omdat de variabele sFormulaTemplate als Static is gedeclareerd, zal de macro het sjabloon onthouden gedurende de tijd dat Excel open is.
Na uitvoeren van deze macro op de cel C3 van hierboven, wordt de nieuwe formule in C3:
=ALS(ISFOUT(B3/A3);"";B3/A3)
Veelgestelde vragen
Wat is een eenvoudige manier om deling door nul in Excel-formules te voorkomen?
Hoe kan ik een foutcontrole toevoegen aan een bereik met formules in Excel?
Wat doet de VBA routine 'ChangeFormulas' in het voorbeeld?
Hoe werkt het sjabloon in de VBA macro voor foutcontrole?
Hoe pas ik de bestaande formule aan met de foutcontrole macro?
Wat is het effect van de 'Static' declaratie van de variabele sFormulaTemplate?
Hoe ziet de nieuwe formule eruit na het uitvoeren van de macro op cel C3?
Waarom is het nodig om foutcontrole toe te passen op formules met meerdere cellen?
Wat gebeurt er als de inputbox in de macro leeg wordt gelaten?
Hoe selecteer ik de cellen waarop ik de foutcontrole wil toepassen?

