Я пытаюсь написать UDF, который возвращает массив (функция CSE). В частности, UDF получает путь к папке и перечисляет все в нем.
Я думаю, что я почти на месте, потому что при отладке функция имеет все элементы массива, присвоенные значениям, которые я хочу, но при выполнении Ctrl + Shift + Enter в выбранном диапазоне в Excel, он показывает только первый элемент.
Function VBA_ListFilesIn(mypath As String) As Variant
Dim myArray() As String
Dim myArraySize As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim oFile As Object
Dim i As Integer
myArraySize = CountFilesInFolder(mypath)
ReDim myArray(1 To myArraySize)
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(mypath)
i = 1
For Each oFile In oFolder.Files
myArray(i) = oFile.Name
If i < myArraySize Then
i = i + 1
End If
Next oFile
VBA_ListFilesIn = myArray
End Function
Это отрывок моих местных жителей прямо перед функцией завершения ...
CountFilesInFolder вот что: https://wellsr.com/vba/2016/excel/vba-count-files-in-folder/
Я искал эту проблему, но я мог найти только людей, имеющих #VALUE, в основном не достигших даже этого последнего шага.
Примечание : Изменение типа возвращаемого значения функции с варианта на строку () приводит к той же самой проблеме.
Возможно, у нее есть очень очевидное решение, но я здесь некоторое время потерян.