私はもともと、2 次元バリアント配列を返す 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 から、十分な大きさの範囲を選択してから、次のようにします。
=マイラッパー()
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 次元配列を持つことが予想されますが、その後の Selection.FormulaArray には、代入後もまだ何も含まれていません。私は盲目的に明らかな何かを見逃していると確信しています。