Este script VBA pode ser utilizado para comparar valores existentes em uma planilha MS Excel e realizar validações de seu conteúdo.
Alguns dias atrás, solicitaram-me um script para controlar os pesos que eram inseridos nas células de uma planilha de pesquisa. A situação era mais ou menos a seguinte:
-Uma questão possui inúmeras respostas afirmativas, onde o usuário, deve definir os pesos de cada uma das opções de 1 a 12, sendo que 1 é maior prioridade e 12 menor.
-As prioridades não poderiam se repetir na mesma resposta.
-Seria utilizado mais de uma coluna para preencher os valores.
-As colunas de resposta seriam A e D.
-As linhas onde poderiam ser inseridas as respostas, variavam de 23 a 28.
-Caso um valor já existisse, deveria ser exibida uma mensagem de alerta, informando a existência do mesmo e perguntando, se deveria ser alterado o valor anterior ou o valor atual.
-O valor a alterar deveria ser apagado e a célula receber o foco.
O código a seguir, pode ser utilizado para realizar este tipo de verificação e com algumas alterações pode ser extendido para satisfazer outras necessidades.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim endereco As Variant
Dim col, lin As Integer
Dim ende As String
Dim x
endereco = Split(CStr(Target.Address), "$")
If endereco(1) = "A" Or endereco(1) = "D" Then
If endereco(2) >= 23 And endereco(2) <= 28 Then
For col = 0 To 1
For lin = 23 To 28
If col = 0 Then
ende = "$A$"
Else
ende = "$D$"
End If
ende = ende & lin
If Trim(Target.Value) <> "" And Trim(Target.Value) <> 0 Then
If ende <> Target.Address Then
If Range(ende).Value = Target.Value Then
x = MsgBox("Atenção, o valor já existe!" & vbCrLf & "Deseja alterar o valor anterior?", vbYesNo, "TESTE XYZ")
If x = vbYes Then
Range(ende).Value = ""
Range(ende).Activate
Else
Target.Value = ""
Target.Activate
End If
End If
End If
End If
Next
Next
End If
End Sub
Tiago Larios