У меня изначально была функция 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
variable_temp, как и ожидалось, имеет двумерный массив после возврата из SplitIntoCells, но в последующем Selection.FormulaArray по-прежнему ничего нет даже после присваивания.Я уверен, что упускаю что-то ослепительно очевидное.