将公式分配给范围的数组时,VBA错误1004

时间:2017-09-01 09:29:31

标签: arrays excel vba excel-vba

当我尝试将我的数组转储到某个范围时,我得到一个错误1004,但只有当数组中的公式包含括号时才会出现。

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)

我甚至尝试用这个变种替换公式

var myObj = {
  gift: "pony",
  pet: "kitten",
  bed: "sleigh"
};

function checkObj(checkProp) {
  if(myObj.hasOwnProperty(checkProp)) { 
    return myObj[checkProp]; 
  } else {
    return "Not Found";
  } 
}

checkObj("gift");

这就是它在我的数组中的样子

patch

1 个答案:

答案 0 :(得分:0)

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