小编A.S*_*erh的帖子

将VBA数组分配给excel范围的公式时的奇怪行为

这很奇怪......有人知道或者可以弄清楚为什么会这样?

在过去,我能够为Excel范围分配一个公式数组(快速赋值示例:) Range("A1:A1000") = ArrayOfFormulas.与逐个细胞分配相比,它工作得很好并且非常(非常 )(逐个细胞的示例:Range("A" & i).Formula=ArrayOfFormula(i)在循环内.很慢!).

我现在正在使用Excel 2013,并且当尝试将存储在字符串数组中的公式分配给excel范围时,它不起作用(excel显示公式,但不是根据下图左侧部分的计算)遗憾的是,我无法检索旧代码进行比较.例如,以下代码在A1到A1000的范围内显示"= 1 + 2"而不是"3".

Sub AssignFormulas_1()
    Dim i as Long
    Dim FORML_ARRAY(1 To 1000, 1 To 1) As String
    For i = 1 To 1000
         FORML_ARRAY(i, 1) = "=1+2"
    Next i
    Range("A1:A1000").Formula = FORML_ARRAY  '<- Don't work as formula
                                             '   It put the value!
End Sub
Run Code Online (Sandbox Code Playgroud)

但是,当我不使用公式数组时,它工作正常(所有单元格显示"3"而不是"= 1 + 2",如下图右侧所示).这里的代码:

Sub AssignFormulas_2()
    Dim i as Long
    Dim FORML_SINGLE As String …
Run Code Online (Sandbox Code Playgroud)

arrays excel performance vba excel-vba

5
推荐指数
1
解决办法
2263
查看次数

标签 统计

arrays ×1

excel ×1

excel-vba ×1

performance ×1

vba ×1