0

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

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

我使用公式数组语法从另一个 vba 函数调用它:

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

在 Excel 中,如果我选择了足够大的范围,然后执行以下操作:

=我的包装器()

然后按 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

从 SplitIntoCells 返回后,variant_temp 可以预见地具有二维数组,但即使在分配之后,后续的 Selection.FormulaArray 仍然没有任何内容。我确信我错过了一些非常明显的东西。

4

1 回答 1

0

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

于 2011-10-12T17:10:52.843 回答