2017-09-01 116 views
0

当试图将我的数组转储到一个范围时,我得到一个错误1004,但只有在包含括号的数组中有一个公式时。将公式分配给范围的公式时,VBA错误1004

Dim DataArray(27, 11) as Variant 
Dim wod as Worksheet 
dim rng as Range 
Dim d as Range 
Dim ArrayEnd as Integer 

这是我的阵列

For y = 0 To lastrowo 
        If Not IsEmpty(d.Offset(y, 0).Value) Then 
         DataArray(y, 0) = d.Offset(y, 0).Value2 
         DataArray(y, 1) = d.Offset(y, 10).Value2 
         DataArray(y, 2) = d.Offset(y, 14).Value2 
         DataArray(y, 3) = d.Offset(y, 16).Value2 
         DataArray(y, 4) = d.Offset(y, 19).Value2 
         DataArray(y, 5) = d.Offset(y, 22).Value2 
         DataArray(y, 6) = d.Offset(y, 25).Value2 
         DataArray(y, 7) = "=ROUND(F" & y + 3 & "-G" & y + 3 & ";0)" 
         DataArray(y, 8) = "=G" & y + 3 
         DataArray(y, 9) = d.Offset(y, 28).Value2 
         DataArray(y, 10) = d.Offset(y, 31).Value2 
         DataArray(y, 11) = d.Offset(y, 36).Value2 

这是有问题的部分,如果删除括号和 “;”它一切正常。

DataArray(y, 7) = "=ROUND(F" & y + 3 & "-G" & y + 3 & ";0)" 

而且这是我得到的错误

Set rng = wod.Range("A3:L" & ArrayEnd + 3) 
         rng = DataArray 

我甚至试过这种变异

"=ROUND" & Chr(40) & "F" & y + 3 & "-G" & y + 3 & Chr(59) & "0" & Chr(41) 

更换配方,这是它的外观在我的数组

Watch

+1

你尝试','而不是';'? – IQV

+0

是的,这是什么,本地化罢工了。 – PRKNS

回答

0

您需要在从VBA发送到Excel的公式中使用美国英语格式 - 因此请尝试替换;与,