将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

但是,当我不使用公式数组时,它可以正常工作(根据下图的右侧,所有单元格都显示“ 3”而不是“ = 1 + 2”)。这里的代码:

Sub AssignFormulas_2()
    Dim i as Long
    Dim FORML_SINGLE As String
    FORML_SINGLE = "=1+2"
    Range("A1:A1000").Formula = FORML_SINGLE '<- works ok, not practical for my
                                             '   real life case as I need 
                                             '   different formula for each cell.
End Sub

以下代码也可以很好地工作(在这种情况下,我逐个单元地分配公式,因此更灵活,但对于大型公式来说则比较宽松)。

Sub AssignFormulas_3()
    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"
         Range("A1:A" & i).Formula = FORML_ARRAY(i, 1) '<- works ok, but slowly
    Next i
End Sub

所有上述代码输出的图片:

结果示例错误(左)和正确(右)


注意:单元格的格式正确为数字,而不是文本!

L42

您的第一个代码应该工作。
而不是将其声明为字符串,而是将其声明为variant。

因此,从此更改您的声明:

Dim FORML_ARRAY(1 To 1000, 1 To 1) As String

对此:

Dim FORML_ARRAY(1 To 1000, 1 To 1) As Variant

我无法在Excel 2013上尝试使用它,但是应该可以使用。
希望能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数组分配给数组

来自分类Dev

VBA Excel:将范围值分配给新范围

来自分类Dev

mojolicious将数组分配给javascript变量

来自分类Dev

将字符串数组分配给char **

来自分类Dev

将数组分配给.RemoveDuplicates Columns:=

来自分类Dev

将字符串数组分配给char **

来自分类Dev

将复选框数组分配给变量

来自分类Dev

将结构数组分配给协议数组

来自分类Dev

将char数组分配给char *

来自分类Dev

将数组分配给哈希子项

来自分类Dev

将值从数组分配给结构数组

来自分类Dev

将多个数组分配给数据框

来自分类Dev

Perl将@ARGV数组分配给变量

来自分类Dev

Swift,发出将数组分配给变量的问题

来自分类Dev

将JavaScript数组分配给innerHTML

来自分类Dev

将变量分配给数组时,为什么出现数组下标超出范围错误?

来自分类Dev

将int分配给数组时出现分段错误

来自分类Dev

将数组分配给对象?

来自分类Dev

将数组分配给对象?

来自分类Dev

VBA Excel:将范围值分配给新范围

来自分类Dev

无法将数组分配给struct属性

来自分类Dev

将const char数组分配给char数组

来自分类Dev

将char数组分配给单个char的奇怪行为

来自分类Dev

Excel-VBA,将公式值分配给变量

来自分类Dev

将元组分配给数组

来自分类Dev

将数组分配给对象

来自分类Dev

编译错误:尝试将数组分配给数组时,从不兼容的类型“char”分配给“int”

来自分类Dev

将数组分配给 DataFrame 时形状不匹配

来自分类Dev

使用 char 将一个 char 数组分配给另一个 char 数组时的奇怪行为