Contando valores exclusivos em uma matriz VBA com funções definidas pelo usuário

0

Eu tenho uma função VBA que passa por alguns intervalos fornecidos pelo usuário com base nas condições fornecidas pelo usuário e adiciona itens a um array. Para os casos de uso projetados, ele quase certamente adicionará duplicatas. No final, estou interessado apenas no número de itens exclusivos da matriz que construí.

Estou tentando chamar essa função:

Function GetUniqueCount(aFirstArray As Variant)

Dim arr As New Collection, a
Dim i As Long

On Error Resume Next

For Each a In aFirstArray
    arr.Add a, Str(a)
Next

GetUniqueCount = arr.Count

End Function

Assim:

Function Stuff(parameters)

Dim myArray() as Variant

...do things to populate myArray, finally

Stuff = GetUniqueCount(myArray)

A função GetUniqueCount é um ajuste levemente modificado da resposta aceita aqui sobre uma questão semelhante.

Quando faço isso, o Stuff sempre acaba retornando 1 mesmo quando parece evidente que não deveria. Eu testei o Stuff até este ponto e ele está produzindo precisamente o número de elementos esperados, estou apenas fazendo algo errado quando tento contar o número desses elementos que são únicos. Qualquer ajuda seria apreciada, pois ainda estou aprendendo os arrays do VBA.

    
por Joe 15.10.2016 / 02:14

1 resposta

1

Eu fiz várias pequenas alterações no UDF () .............. estudo das diferenças:

Function GetUniqueCount(aFirstArray()) As Long
    Dim arr As Collection
    Set arr = New Collection

    On Error Resume Next
        For Each a In aFirstArray
            arr.Add a, CStr(a)
        Next
    On Error GoTo 0
    GetUniqueCount = arr.Count
End Function

Sub MAIN()
    Dim inpt()
    inpt = Array("alpha", "alpha", "beta", "beta", "gamma")
    MsgBox GetUniqueCount(inpt)
End Sub

    
por 15.10.2016 / 03:03