Abaixo, veremos um programa em Excel VBA que compara selecionado aleatoriamente gamas e destaca células que são únicas. Se você ainda não está familiarizado com as áreas, recomendamos que leia este exemplo primeiro.
Situação:
Nota: o único valor único neste exemplo é o 3, uma vez que todos os outros valores ocorrem em pelo menos mais uma área. Para selecionar Intervalo ("B2: B7, D3: E6, D8: E9"), mantenha pressionada a tecla Ctrl e selecione cada área.
Coloque um botão de comando em sua planilha e adicione as seguintes linhas de código:
1. Primeiro, declaramos quatro objetos Range e duas variáveis do tipo Integer.
Dim rangeToUse As Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer
2. Inicializamos o objeto Range rangeToUse com o range selecionado.
Definir rangeToUse = Seleção
3. Adicione a linha que altera a cor de fundo de todas as células para 'Sem preenchimento'. Adicione também a linha que remove as bordas de todas as células.
Cells.Interior.ColorIndex = 0
Cells.Borders.LineStyle = xlNone
4. Informe o usuário quando ele selecionar apenas uma área.
If Selection.Areas.Count <= 1 Then
MsgBox "Selecione mais de uma área."
Outro
Fim se
As próximas linhas de código (em 5, 6 e 7) devem ser adicionadas entre Else e End If.
5. Pinte as células das áreas selecionadas.
rangeToUse.Interior.ColorIndex = 38
6. Limite cada área.
Para Cada SingleArea In rangeToUse.Areas
singleArea.BorderAround ColorIndex: = 1, Peso: = xlThin
Next singleArea
7. O resto deste programa tem a seguinte aparência.
Para i = 1 para rangeToUse.Areas.Count
Para j = i + 1 para rangeToUse.Areas.Count
Para Cada célula1 Em rangeToUse.Areas (i)
Para Cada célula2 Em rangeToUse.Areas (j)
Se cell1.Value = cell2.Value Then
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
Fim se
Próxima célula 2
Próxima célula1
Próximo j
Proximo eu
Explicação: isso pode parecer um pouco opressor, mas não é tão difícil. rangeToUse.Areas.Count é igual a 3, então as duas primeiras linhas de código reduzem para For i = 1 a 3 e For j = i + 1 a 3. Para i = 1, j = 2, o Excel VBA compara todos os valores da primeira área com todos os valores da segunda área. Para i = 1, j = 3, o Excel VBA compara todos os valores da primeira área com todos os valores da terceira área. Para i = 2, j = 3, o Excel VBA compara todos os valores da segunda área com todos os valores da terceira área. Se os valores forem iguais, ele define a cor de fundo de ambas as células como 'Sem preenchimento', porque elas não são exclusivas.
Resultado quando você clica no botão de comando na planilha: