Можно ли вообще иметь функцию в VBA Excel, которая принимает массивы в качестве параметров (входных данных) и выводит себя в виде массива? - PullRequest
1 голос
/ 14 июня 2019

Попытка создать функцию, которая будет принимать аргументы массива и выводить себя в конце как массив.

Псевдокод:

Function CheckCommonPartOfArrays(ByRef arrayA as Variant, ByRef arrayB as Variant) as Variant

    Dim aTemp()
    Dim itemA as Variant
    Dim itemB as Variant
    Dim i 

    For Each itemA in arrayA
        For Each itemB in arrayB
            If itemA = itemB Then
                Redim Preserve aTemp(i)
                aTemp(i) = itemA
                i = i + 1
            End If
        Next itemB
    Next itemA

    ' And here is the problem, now trying to copy this
    ' temporary array Temp() into the array CheckCommonPartOfArrays,
    ' which is declared as Variant in the beginning of the function,
    ' but it doesn't work.


    CheckCommonPartOfArrays = aTemp
End Function

В окне LOCALS онаКажется, что CheckCommonPartOfArrays на самом деле является массивом, и он содержит элементы, которые я хочу, однако, когда я пытаюсь скопировать его в другой массив ИЛИ даже отладить. выводить значения, каждый раз, когда я пытаюсь вызвать его, он вызывает как функцию и сообщаетмне этот «аргумент не является обязательным» - имеется в виду массив ByRefA как Variant, массив ByRefB ... и т. д. '

Есть ли способ сделать это?

Я хотел бы, чтобы функция взялав двух одномерных массивах в качестве аргументов, а затем в конце я хотел бы, чтобы сама функция была результирующим массивом, который я мог бы использовать позже в коде.

...