Beste Allemaal,
Ik probeer een FormulaArray (Matrixformule {}) te maken in VBA. Op internet heb ik gelezen dat deze niet langer mag zijn dan 255 tekens.
Om dit op te lossen is het mogelijk om de formule in stukken te knippen en deze te vervangen. Nu ben ik hier druk mee bezig, maar op een of andere manier lukt het mij niet.
Wanneer ik onderstaande code invoer geeft hij voor "AAA" de uitkomst van 'Part2' weer. Helaas doet hij dit als tekst en niet als (werkende) formule. Voor "BBB" geeft hij gewoon "BBB" weer.
Weet iemand waarom dit zo is? Wat doe ik fout? Ik hoop dat iemand kan helpen!
Ik probeer een FormulaArray (Matrixformule {}) te maken in VBA. Op internet heb ik gelezen dat deze niet langer mag zijn dan 255 tekens.
Om dit op te lossen is het mogelijk om de formule in stukken te knippen en deze te vervangen. Nu ben ik hier druk mee bezig, maar op een of andere manier lukt het mij niet.
Wanneer ik onderstaande code invoer geeft hij voor "AAA" de uitkomst van 'Part2' weer. Helaas doet hij dit als tekst en niet als (werkende) formule. Voor "BBB" geeft hij gewoon "BBB" weer.
Weet iemand waarom dit zo is? Wat doe ik fout? Ik hoop dat iemand kan helpen!
Code:
Dim Part1 As String
Dim Part2 As String
Dim Part3 As String
Dim Part4 As String
Part1 = "=IFERROR(IF(OR(IF(RC[-4]=""DIRECT"",""AAA"",""BBB"")=R1C5+16,IF(RC[-4]=""DIRECT"",""AAA"",""BBB"")=R1C5-5),""Bestellen"",IF(RC[-4]=""DIRECT"",""AAA"",""BBB"")),""Bestellen"")"
Part2 = "MIN(IF(RC[-20]:RC[-5]>=0,COLUMN(RC[-20]:RC[-5])))-5+R1C5"
Part3 = "MIN(IF(""CCC"",COLUMN(INDIRECT((CELL(""adres"",(INDEX(OFFSET(RC[-20],0,0,COUNTA(C5),16),1,MIN(IF(RC[-20]:RC[-5]<=-0.1,COLUMN(RC[-20]:RC[-5])))-4))))):RC[-5])))-5+R1C5"
Part4 = "INDIRECT((CELL(""adres"",(INDEX(OFFSET(RC[-20],0,0,COUNTA(C5),16),1,MIN(IF(RC[-20]:RC[-5]<=-0.1,COLUMN(RC[-20]:RC[-5])))-4))))):RC[-5]>=0"
With Sheets("Blad2").Range("Y2")
.FormulaArray = Part1
.Replace What:="AAA", Replacement:=Part2, Lookat:=xlPart, MatchCase:=True
.Replace What:="BBB", Replacement:=Part3, Lookat:=xlPart, MatchCase:=True
.Replace What:="CCC", Replacement:=Part4, Lookat:=xlPart, MatchCase:=True
End With