ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Error 1004 - unable to set the FormulaArray property of the Range (https://www.excelbanter.com/excel-programming/430349-error-1004-unable-set-formulaarray-property-range.html)

diepvic

Error 1004 - unable to set the FormulaArray property of the Range
 

Hi,

I've got a macro like below:

Rang("A1").FormulaArray = _
"=+U24-SUM(IF(('[Data process.xls]Sundry-LEC'!$J$1:$J$9=$A$24)*('[Data
process.xls]Sundry-LEC'!$F$1:$F$9=$B$6),'[Data
process.xls]Sundry-LEC'!$G$1:$G$9,0))-SUM(IF((('[Data process.xls]BS (excl.
Off PL)'!$L$1:$L$" & lngLastRowBS & "=""1305028050"")+('[Data process.xls]BS
(excl. Off PL)'!$L$1:$L$" & lngLastRowBS & "=""1305028055""))*('[Data
process.xls]BS (excl. Off PL)'!$M$1:$M$" & lngLastRowBS & "=$B$6),'[Data
process.xls]BS (excl. Off PL)'!$N$1:$N$" & lngLastRowBS & ",0))"

Yep, the formula for A1 is so complex & quite long. Not sure if that's the
reason which causes error 1004. Pls help me how to solve it.

JLatham

Error 1004 - unable to set the FormulaArray property of the Range
 

One thing I see right away is that there is no such thing as "Rang("
worksheets have a Range( object.

Also, on down about the 4th row that shows up here is a segment that looks
like
lngLastRowBS & "=""1305028050"")+(
That probably won't come out right - I think it should probably be
lngLastRowBS & "=1305028050")+(
or else it needs some & symbols in it to pull things together.

A way to see what it is building it to assign it all to a string and either
put the string into a cell and examine it and compare it to what it should
be, or to display it in a message box for examination (not the best way).

Try starting with this:
Dim myFormula as String
myFormula = _
"=+U24-SUM(IF(('[Data process.xls]Sundry-LEC'!$J$1:$J$9=$A$24)*('[Data
process.xls]Sundry-LEC'!$F$1:$F$9=$B$6),'[Data
process.xls]Sundry-LEC'!$G$1:$G$9,0))-SUM(IF((('[Data process.xls]BS (excl.
Off PL)'!$L$1:$L$" & lngLastRowBS & "=""1305028050"")+('[Data process.xls]BS
(excl. Off PL)'!$L$1:$L$" & lngLastRowBS & "=""1305028055""))*('[Data
process.xls]BS (excl. Off PL)'!$M$1:$M$" & lngLastRowBS & "=$B$6),'[Data
process.xls]BS (excl. Off PL)'!$N$1:$N$" & lngLastRowBS & ",0))"

Range("A1") = "'" & myFormula
(that is a single quote mark between 2 double quote marks to put the single
quote mark in front of the = of the formula so that it will be visible as a
text entry on the sheet for comparison).



"diepvic" wrote:

Hi,

I've got a macro like below:

Rang("A1").FormulaArray = _
"=+U24-SUM(IF(('[Data process.xls]Sundry-LEC'!$J$1:$J$9=$A$24)*('[Data
process.xls]Sundry-LEC'!$F$1:$F$9=$B$6),'[Data
process.xls]Sundry-LEC'!$G$1:$G$9,0))-SUM(IF((('[Data process.xls]BS (excl.
Off PL)'!$L$1:$L$" & lngLastRowBS & "=""1305028050"")+('[Data process.xls]BS
(excl. Off PL)'!$L$1:$L$" & lngLastRowBS & "=""1305028055""))*('[Data
process.xls]BS (excl. Off PL)'!$M$1:$M$" & lngLastRowBS & "=$B$6),'[Data
process.xls]BS (excl. Off PL)'!$N$1:$N$" & lngLastRowBS & ",0))"

Yep, the formula for A1 is so complex & quite long. Not sure if that's the
reason which causes error 1004. Pls help me how to solve it.


Charles Williams

Error 1004 - unable to set the FormulaArray property of the Range
 
Your formula is too long: using VBA to insert a FormulaArray the max is
approx 256, your formula is over 470.

regards
Charles
___________________________________
The Excel Calculation Site
http://www.decisionmodels.com

"diepvic" wrote in message
...

Hi,

I've got a macro like below:

Rang("A1").FormulaArray = _
"=+U24-SUM(IF(('[Data process.xls]Sundry-LEC'!$J$1:$J$9=$A$24)*('[Data
process.xls]Sundry-LEC'!$F$1:$F$9=$B$6),'[Data
process.xls]Sundry-LEC'!$G$1:$G$9,0))-SUM(IF((('[Data process.xls]BS
(excl.
Off PL)'!$L$1:$L$" & lngLastRowBS & "=""1305028050"")+('[Data
process.xls]BS
(excl. Off PL)'!$L$1:$L$" & lngLastRowBS & "=""1305028055""))*('[Data
process.xls]BS (excl. Off PL)'!$M$1:$M$" & lngLastRowBS & "=$B$6),'[Data
process.xls]BS (excl. Off PL)'!$N$1:$N$" & lngLastRowBS & ",0))"

Yep, the formula for A1 is so complex & quite long. Not sure if that's the
reason which causes error 1004. Pls help me how to solve it.




diepvic

Error 1004 - unable to set the FormulaArray property of the Range
 

Thx JLatham,
The' Rang(" is my typo.

the 4th line: lngLastRowBS & "=""1305028050"")+(
double " is because 1305028050 is a text, not a number. So in excel, in a
formula, i need to quote it to make it a text.

I'll try like what you suggested. But, I do not really understand.
the formula works well in excel. i just copy it to macro and change the
number of the last row in to "lngLastRowBS" which is my variable used to find
the last used row after refresh data.



Dave Peterson

Error 1004 - unable to set the FormulaArray property of the Range
 

When I have trouble writing a formula to a cell in the worksheet, I'll make it a
string.

.....formulaarray = "U24-...

I removed the =+ (in fact, the + isn't necessary).

Then let the macro get by that line and back to the worksheet that got the
formula.

Add the = sign back and hit ctrl-shift-enter (since you want an array formula).

Maybe that'll give you a hint what's wrong.

ps. Make sure you're in A1 reference style, too.

diepvic wrote:

Hi,

I've got a macro like below:

Rang("A1").FormulaArray = _
"=+U24-SUM(IF(('[Data process.xls]Sundry-LEC'!$J$1:$J$9=$A$24)*('[Data
process.xls]Sundry-LEC'!$F$1:$F$9=$B$6),'[Data
process.xls]Sundry-LEC'!$G$1:$G$9,0))-SUM(IF((('[Data process.xls]BS (excl.
Off PL)'!$L$1:$L$" & lngLastRowBS & "=""1305028050"")+('[Data process.xls]BS
(excl. Off PL)'!$L$1:$L$" & lngLastRowBS & "=""1305028055""))*('[Data
process.xls]BS (excl. Off PL)'!$M$1:$M$" & lngLastRowBS & "=$B$6),'[Data
process.xls]BS (excl. Off PL)'!$N$1:$N$" & lngLastRowBS & ",0))"

Yep, the formula for A1 is so complex & quite long. Not sure if that's the
reason which causes error 1004. Pls help me how to solve it.


--

Dave Peterson

diepvic

Error 1004 - unable to set the FormulaArray property of the Ra
 

Thanks you guys for your support.
I've been advised a macro as below:

Dim myFormula1 as string
Dim myFormula2 as string

myFormula1 = " +U24-SUM(IF(('[Data
process.xls]Sundry-LEC'!$J$1:$J$9=$A$24)*('[Data
process.xls]Sundry-LEC'!$F$1:$F$9=$B$6),'[Data
process.xls]Sundry-LEC'!$G$1:$G$9,0))" & "+1"

myFormula2 = "-SUM(IF((('[Data process.xls]BS (excl.
Off PL)'!$L$1:$L$" & lngLastRowBS & "=""1305028050"")+('[Data process.xls]BS
(excl. Off PL)'!$L$1:$L$" & lngLastRowBS & "=""1305028055""))*('[Data
process.xls]BS (excl. Off PL)'!$M$1:$M$" & lngLastRowBS & "=$B$6),'[Data
process.xls]BS (excl. Off PL)'!$N$1:$N$" & lngLastRowBS & ",0))"

With ActiveSheet.Range("A1")
.FormulaArray = myFormula1
.Replace "+1",myFormula2
End with



Dave Peterson

Error 1004 - unable to set the FormulaArray property of the Ra
 

I didn't notice the length of the string.

If you want more info, take a look at Dick Kusleika's site:
http://www.dailydoseofexcel.com/arch...rmulas-in-vba/

It's a technique to workaround that .formulaarray length limit.

diepvic wrote:

Thanks you guys for your support.
I've been advised a macro as below:

Dim myFormula1 as string
Dim myFormula2 as string

myFormula1 = " +U24-SUM(IF(('[Data
process.xls]Sundry-LEC'!$J$1:$J$9=$A$24)*('[Data
process.xls]Sundry-LEC'!$F$1:$F$9=$B$6),'[Data
process.xls]Sundry-LEC'!$G$1:$G$9,0))" & "+1"

myFormula2 = "-SUM(IF((('[Data process.xls]BS (excl.
Off PL)'!$L$1:$L$" & lngLastRowBS & "=""1305028050"")+('[Data process.xls]BS
(excl. Off PL)'!$L$1:$L$" & lngLastRowBS & "=""1305028055""))*('[Data
process.xls]BS (excl. Off PL)'!$M$1:$M$" & lngLastRowBS & "=$B$6),'[Data
process.xls]BS (excl. Off PL)'!$N$1:$N$" & lngLastRowBS & ",0))"

With ActiveSheet.Range("A1")
.FormulaArray = myFormula1
.Replace "+1",myFormula2
End with


--

Dave Peterson


All times are GMT +1. The time now is 10:20 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com