Formules voorzien van een foutcontrole
Pagina's in dit artikel
Aanpassen t.b.v. matrix formules
De eerste poging was verre van volledig. De macro is bijvoorbeeld niet berekend op cellen die matrix formules hebben.
Rekening houden met matrix formules is wat ingewikkelder dan op het eerste gezicht lijkt.
Ten eerste moet een bereik dat één matrix formule bevat ook als eenheid behandeld worden (het is niet toegestaan de formule van 1 cel binnen een matrix te veranderen). Ten tweede moet bijgehouden worden welke bereiken al bewerkt zijn, zodat hetzelfde bereik met matrixformules niet twee of meerdere keren verwerkt wordt. De onderstaande code houdt rekening met deze situaties:
Sub ChangeFormulas()
Dim oCell As Range
Dim sFormula As String
Dim sInput As String
Dim oDone As Range
Dim bFirst As Boolean
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) - IIf(Left(oCell.Formula, 1) = "=", 1, 0)))
If bFirst = False Then
bFirst = True
Set oDone =
oCell
If
oCell.HasArray Then
oCell.CurrentArray.FormulaArray = sFormula
Set oDone = Union(oDone, oCell.CurrentArray)
Else
oCell.Formula = sFormula
Set oDone = Union(oDone, oCell)
End If
ElseIf Intersect(oDone, oCell) Is
Nothing Then
If
oCell.HasArray Then
oCell.CurrentArray.FormulaArray = sFormula
Set oDone = Union(oDone, oCell.CurrentArray)
Else
oCell.Formula = sFormula
Set oDone = Union(oDone, oCell)
End If
End If
Next
End Sub
Veelgestelde vragen
Wat houdt het aanpassen van formules voor matrix formules in?
Waarom is het belangrijk om matrix formules als eenheid te behandelen?
Hoe voorkomt de macro dat hetzelfde bereik met matrix formules meerdere keren wordt bewerkt?
Wat doet de VBA-code in de macro ChangeFormulas?
Waarom is rekening houden met matrix formules ingewikkelder dan het lijkt?
Wat is het doel van de variabele sFormulaTemplate in de VBA-code?
Hoe wordt de invoer van de gebruiker verwerkt in de macro?
Wat gebeurt er als een cel een matrix formule bevat in de macro?
Hoe zorgt de macro ervoor dat formules correct worden aangepast in geselecteerde cellen?


Vragen, suggesties of opmerkingen