Existem várias maneiras de localizar nomes repetidos no Excel VBA, mas aqui está um exemplo simples usando a função COUNTIF.
Suponha que você tenha uma lista de nomes na coluna A, começando na célula A2, e queira encontrar os nomes que se repetem. Você pode fazer o seguinte:
Dim nomeRange As Range Set nomeRange = Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
Essa variável é definida para a coluna A, começando na linha 2 e terminando na última linha preenchida da coluna A.
Dim repetidos() As String ReDim repetidos(1 To nomeRange.Cells.Count, 1 To 1)
Nessa matriz, cada elemento corresponderá a uma célula no intervalo de nomes.
Dim i As Long, j As Long For i = 1 To nomeRange.Cells.CountIf WorksheetFunction.CountIf(nomeRange, nomeRange.Cells(i)) > 1 Then j = j + 1 repetidos(j, 1) = nomeRange.Cells(i)End If Next i
Se um nome aparecer mais de uma vez, ele é adicionado à matriz de nomes repetidos.
If j = 0 ThenMsgBox "Não há nomes repetidos." ElseMsgBox "Os seguintes nomes aparecem mais de uma vez:" & vbNewLine _ & Join(Application.Transpose(repetidos), vbNewLine) End If
Se não houver nomes repetidos, uma mensagem é exibida informando isso. Caso contrário, uma mensagem é exibida com uma lista dos nomes repetidos separados por quebras de linha. Você também poderia exibir essa lista em uma planilha, se quisesse.
Esse é apenas um exemplo básico, e existem muitas maneiras de aprimorá-lo ou torná-lo mais eficiente, dependendo da sua situação específica. Mas espero que isso lhe dê uma ideia de como localizar nomes repetidos no Excel VBA.