Objetivo: Função VBA que identifica se em uma lista de valores existem apenas valores repetidos ou não.
Esta função identifica se na seleção de dados existem valores repetidos, interessante o uso do For Each na varredura dos dados e objeto collection.
Para determinar esta função como global você pode seguir os passos do artigo Criando Funções Próprias Globais.
'Função que identifica se há repetidos
Public Function lfRepetidos(ByVal lRange As Range, _
ByRef lResultadoPositivo As Variant, _
ByRef lResultadoNegativo As Variant) As Variant
'Ao ocorrer um erro ele continua do próximo registro por este tratamento de erro
On Error Resume Next
'Recalcula esta função ao ser alterado qualquer informação na planilha
Application.Volatile
'Determina as variáveis
Dim lCel As Range
Dim lUnicos As New Collection
Dim lQtde As Long
'Identifica a quantidade de células que possui o intervalo
lQtde = lRange.Rows.Count * lRange.Columns.Count
'Realiza a varredura de todos os dados do Range de células
For Each lCel In lRange
'Adiciona um objeto a coleção, sendo que o valor do segundo argumento deve ser único,
'e portanto caso haja repetição de dados ele passará ao próximo registro
lUnicos.Add lCel.Value, CStr(lCel.Value)
Next lCel
On Error GoTo 0
If lQtde > lUnicos.Count Then
lfRepetidos = lResultadoNegativo
Else
lfRepetidos = lResultadoPositivo
End If
End Function
Exemplo de uso da função: =lfRepetidos(A2:E2;”Não”;”Sim”).
Marcos Rieper