Valores correspondentes na matriz de cadeias

Problema: Procurando por uma maneira mais eficiente de descobrir se existe um valor exato correspondente em uma matriz 1d - essencialmente um valor booleanotrue/false.

Eu estou negligenciando algo óbvio? Ou eu estou simplesmente usando a estrutura de dados errada, usando uma matriz quando eu provavelmente deveria estar usando um objeto de coleção ou um dicionário? Neste último eu poderia verificar o.Contains ou.Exists método, respectivamente

No Excel, posso verificar um valor em uma matriz vetorial como:

If Not IsError(Application.Match(strSearch, varToSearch, False)) Then
' Do stuff
End If

Isso retorna um índice de correspondência exata, obviamente sujeito a limitações deMatch função que só encontra oprimeiro valor correspondente neste contexto. Este é um método comumente usado e que eu tenho usado há muito tempo também.

Isso é satisfatório o suficiente para o Excel - mas e quanto a outros aplicativos?

Em outros aplicativos, posso fazer basicamente a mesma coisa, mas requer a ativação da referência à biblioteca de objetos do Excel e, em seguida:

   If Not IsError(Excel.Application.match(...))

Isso parece bobo, porém, e é difícil de gerenciar em arquivos distribuídos por causa de permissões / centro de confiança / etc.

Eu tentei usar oFiltro() função:

 If Not Ubound(Filter(varToSearch, strSearch)) = -1 Then
    'do stuff
 End If

Mas o problema com essa abordagem é queFilter retorna uma matriz de correspondências parciais, em vez de uma matriz de correspondências exatas. (Eu não tenho idéia por que seria útil para retornar correspondências substring / partial.)

A outra alternativa é literalmente iterar sobre cada valor na matriz (isso também é muito comumente usado eu acho) - o que parece ainda mais desnecessariamente complicado do que chamar no ExcelMatch função.

For each v in vArray
   If v = strSearch Then
    ' do stuff
   End If
Next