将2-d Variant数据推入FormulaArray

时间:2011-10-12 16:16:04

标签: excel vba array-formulas

我最初有一个返回二维变体数组的VBA函数:

Public Function SplitIntoCells(some_data As String) As Variant()
End Function

我使用了Formula数组语法从另一个vba函数中调用它:

Public Function MyWrapper() as Variant
    MyWrapper = SplitIntoCells("somestring")
End Function

从Excel中,如果我选择足够大的范围然后执行:

= MyWrapper()

然后按CTRL + SHIFT + ENTER,数据很好地分成该范围内的每个单独的单元格。

然而,为了实现自动化,如果我将MyWrapper更改为:

Public Function MyWrapper()
    ActiveSheet.Range("A1:E20").Select
    Selection.FormulaArray = SplitIntoCells("somestring")
End Function

以上不起作用。我发现Excel中没有显示任何内容。

我做错了什么?

更新

仅用于测试,如果我稍微修改MyWrapper()为:

Public Function MyWrapper()
    Dim variant_temp() as Variant
    variant_temp = SplitIntoCells("somestring")
    ActiveSheet.Range("A1:E20").Select
    Selection.FormulaArray = variant_temp
End Function

variant_temp在从SplitIntoCells返回后可预测地具有2-d数组,但是后续的Selection.FormulaArray在赋值后仍然没有任何内容。我确信我错过了一些令人眼花缭乱的事情。

1 个答案:

答案 0 :(得分:0)

VBA用户定义的函数无法修改从中调用的单元格或范围:它只能返回一个值。