【发布时间】:2011-12-06 06:56:56
【问题描述】:
我最初有一个返回二维变量数组的 VBA 函数:
Public Function SplitIntoCells(some_data As String) As Variant()
End Function
我使用公式数组语法从另一个 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 返回后可以预见地具有二维数组,但即使在分配之后,后续的 Selection.FormulaArray 仍然没有任何内容。我确信我遗漏了一些非常明显的东西。
【问题讨论】:
标签: excel vba array-formulas