Arrays & .formulaR1C1 in excel vba

I am not real familiar with arrays, and the formulas are not working. Any ideas why?

With Array(Range(rST.Offset(0, 11).Address), Range(rLT.Offset(0, 11).Address), Range(rTI.Offset(0, 11).Address))
        .FormulaR1C1 = "=RC4/" & NetAssets
        .FormulaR1C1 = "=ROUND(RC[-1],3)"
        .FormulaR1C1 = "=ROUNDDOWN(RC[-2],3)"
End with

   
tiehazeAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
zorvek (Kevin Jones)Connect With a Mentor ConsultantCommented:
Oh my! Thanks Brad...I really goofed that one...

You could also do it this way:

   Dim Target As Range
   Set Target = Union(rST, rLT, rTI)
   Target.Offset(0, 11).FormulaR1C1 = "=RC4/" & NetAssets
   Target.Offset(0, 12).FormulaR1C1 = "=ROUND(RC[-1],3)"
   Target.Offset(0, 13).FormulaR1C1 = "=ROUNDDOWN(RC[-2],3)"
   ...

Kevin
0
 
Rory ArchibaldCommented:
What are you trying to do? I can only guess that that should be:
rST.Offset(0, 11).FormulaR1C1 = "=RC4/" & NetAssets
rLT.Offset(0, 11).FormulaR1C1 = "=ROUND(RC[-1],3)"
rTI.Offset(0, 11).FormulaR1C1 = "=ROUNDDOWN(RC[-2],3)"
?
Regards,
Rory
0
 
tiehazeAuthor Commented:
Sorry, I want this:

rST.Offset(0, 11).FormulaR1C1 = "=RC4/" & NetAssets
rLT.Offset(0, 11).FormulaR1C1 = "=RC4/" & NetAssets
rTI.Offset(0, 11).FormulaR1C1 = "=RC4/" & NetAssets
rST.Offset(0, 12).FormulaR1C1 = "=ROUND(RC[-1],3)"
rLT.Offset(0, 12).FormulaR1C1 = "=ROUND(RC[-1],3)"
rTI.Offset(0, 12).FormulaR1C1 = "=ROUND(RC[-1],3)"
rST.Offset(0, 13).FormulaR1C1 = "=ROUNDDOWN(RC[-2],3)"
rLT.Offset(0, 13).FormulaR1C1 = "=ROUNDDOWN(RC[-2],3)"
rTI.Offset(0, 13).FormulaR1C1 = "=ROUNDDOWN(RC[-2],3)"
... there are actually more formulas, but I excluded them for the simplicity of the question
0
 
zorvek (Kevin Jones)ConsultantCommented:
You can't work with arrays like that. Try this:

   Dim Target As Range
   For Each Target In Array(Range(rST.Offset(0, 11).Address), Range(rLT.Offset(0, 11).Address), Range(rTI.Offset(0, 11).Address))
      With Target
        .FormulaR1C1 = "=RC4/" & NetAssets
        .FormulaR1C1 = "=ROUND(RC[-1],3)"
        .FormulaR1C1 = "=ROUNDDOWN(RC[-2],3)"
       End with
   Next Target

Kevin
0
 
byundtCommented:
I think you need two nested loops:

Dim frmla As Variant, Target As Variant
Dim i As Long
For Each frmla In Array("=RC4/" & NetAssets, "=ROUND(RC[-1],3)", "=ROUNDDOWN(RC[-2],3)")
    For Each Target In Array(rST.Offset(0, 11 + i).Address, rLT.Offset(0, 11 + i).Address, rTI.Offset(0, 11 + i).Address)
        Range(Target).FormulaR1C1 = frmla
    Next Target
    i = i + 1
Next frmla

0
All Courses

From novice to tech pro — start learning today.