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

arrayformula met vba plaatsen

Status
Niet open voor verdere reacties.

jansm

Gebruiker
Lid geworden
2 apr 2014
Berichten
421
Beste mensen, vooralsnog allemaal de beste wensen voor 2017!
Ik heb onderstaande arrayformule opgenomen met de recorder. "Handmatig" geplaatst in de cel werkt het goed (ctr-shift-enter). Maar geplaatst met vba geeft hij de volgende foutmelding
Knipsel.JPG

Code:
Range("G4").FormulaArray = "=IF(R2C=""x"",(INDEX(Trans!R2C10:R109069C10,MATCH(R3C,IF(Trans!R2C3:R109069C3<=(DATEVALUE(RC1&""-""&RC2&""-""&RC4)),Trans!R2C4:R109069C4),0))-INDEX(Trans!R2C10:R109069C10,MATCH(R3C,IF(Trans!R2C3:R109069C3<=(DATEVALUE(RC1&""-""&RC2&""-""&RC3)-1),Trans!R2C4:R109069C4),0))),0)"

Wat doe ik niet goed?
 
Bedoel je:
Sub Macro6()
Range("G4").FormulaArray = _
"=IF(R2C=""x"",(INDEX(Trans!R2C10:R109069C10,MATCH(R3C,IF(Trans!R2C3:R109069C3<=(DATEVALUE(RC1&""-""&RC2&""-""&RC4)),Trans!R2C4:R109069C4),0))-INDEX(Trans!R2C10:R109069C10,MATCH(R3C,IF(Trans!R2C3:R109069C3<=(DATEVALUE(RC1&""-""&RC2&""-""&RC3)-1),Trans!R2C4:R109069C4),0))),0)"
End Sub

ik heb geen voorbeeld geplaatst omdat de formule, handgeplaatst in de cel, het juiste resultaat geeft. Ik heb de recorder gestart, de cel met F2 geopend, daarna ctr-shift-enter en recorder gestopt. Daarna het resultaat van de opname geplaatst achter "Range("G4").FormulaArray" zoals hierboven te zien is. Na runnen macro de foutmelding in de eerste posting
 
deze.
Die heb ik dus mbv de recorder omgezet naar vba

=ALS(G$2="x";(INDEX(Trans!$J$2:$J$109069;VERGELIJKEN(G$3;ALS(Trans!$C$2:$C$109069<=(DATUMWAARDE($A4&"-"&$B4&"-"&$D4));Trans!$D$2:$D$109069);0))-INDEX(Trans!$J$2:$J$109069;VERGELIJKEN(G$3;ALS(Trans!$C$2:$C$109069<=(DATUMWAARDE($A4&"-"&$B4&"-"&$C4)-1);Trans!$D$2:$D$109069);0)));0)
 
Codetags doe je met het # teken.
 
Code:
 "=IF(R2C=""x"",(INDEX(Trans!R2C10:R109069C10,MATCH(R3C,IF(Trans!R2C3:R109069C3<=(DATEVALUE(RC1& ""-""&RC2&""-""&RC4)),Trans!R2C4:R109069C4),0))-INDEX(Trans!R2C10:R109069C10,MATCH(R3C,IF(Trans!R2C3:R109069C3<=(DATEVALUE(RC1&""-""&RC2&""-""&RC3)-1),Trans!R2C4:R109069C4),0))),0)"

Er zat een spatie te veel in RC1& " "
 
Test deze eens
Code:
Sub dotchie()
Range("G4").FormulaR1C1 = _
"=IF(R2C=""x"",(INDEX(Trans!R2C10:R109069C10,MATCH(R3C,IF(Trans!R2C3:R109069C3<=(DATEVALUE(RC1& ""-""& RC2&""-""&RC4)),Trans!R2C4:R109069C4),0))-INDEX(Trans!R2C10:R109069C10,MATCH(R3C,IF(Trans!R2C3:R109069C3<=(DATEVALUE(RC1&""-""&RC2&""-""&RC3)-1),Trans!R2C4:R109069C4),0))),0)"
End Sub
 
Je hebt gelijk Cobbe maar die is er bij mij ingeslopen tijdens het zoeken naar fouten. Met de correctie van jouw geeft hij de zelfde foutmelding. Zet deze melding "Eigenschap FormulaArray van klasse Range kan niet worden ingesteld" jullie niet op het juiste spoor?

@SjonR & Edmoor: wat bedoelt SjonR dan met codetags?
 
Kijk eens naar hoe gast0660 de code heeft geplaatst. Dat doe je dus, zoals ik al zei, met het # knopje in het menu van het schermpje waar je je tekst intikt.
 
He gast0660, gaat in zoverre goed dat de formule geplaatst wordt zonder foutmelding. Resultaat is er niet (#N/B). Cursor op de cel, F2 en shift-ctr-enter geeft wel het juiste resultaat in de cel. Hij wordt dus niet geplaatst als matrixformule denk ik.
 
oooohhhhh edmoor, begreep niet wat bedoeld werd met codetages. Dacht dat het iets in vba was. Doe ik de volgende keer. Mijn belangrijkste voornemen voor 2017!!
 
Het maakt het lezen van code een stuk prettiger en de opmaak blijft behouden :)
 
Maareh... Wát is de reden dat je dit zo wilt hebben in VBA?
 
Hallo Ginger, omdat ik de formules wil kunnen herstellen in deze sheet. De matrix waar vandaan het resultaat gehaald moet worden kan nog weleens door derden beschadigd worden waardoor de verwijzingen in de formules verminkt worden.

Zet deze melding "Eigenschap FormulaArray van klasse Range kan niet worden ingesteld" jullie niet op het juiste spoor?
 
Laatst bewerkt:
@jansm,

Zou het kunnen dat dit je probleem is:
The FormulaArray property also has a character limit of 255.

Code:
"=IF(R2C=""x"",(INDEX(Trans!R2C10:R109069C10,MATCH(R3C,IF(Trans!R2C3:R109069C3<=(DATEVALUE(RC1&" "-""&RC2&""-""&RC4)),Trans!R2C4:R109069C4),0))-INDEX(Trans!R2C10:R109069C10,MATCH(R3C,IF(Trans!R2C3:R109069C3<=(DATEVALUE(RC1&""-""&RC2&""-""&RC3)-1),Trans!R2C4:R109069C4),0))),0)"
is namelijk 277 characters lang.
 
Wher, dat is het probleem. Toch maar wat "samengetrokken" en daar is ie! Dank voor jullie tijd
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan