Notifications
Clear all

VBA verificar se o registro da plan1 existe na plan2

4 Posts
2 Usuários
0 Reactions
905 Visualizações
(@inove)
Posts: 3
New Member
Topic starter
 

Bom dia galera estou com dificuldades no código abaixo VBA Excel, preciso que ao digitar um numero na plan1 exemplo: celula A1, o código faça a verificação na plan2 e caso já exista este registro, a celula mude de cor e apareça a mensagem de registro reincidente.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xlRange As Range
Dim xlCell As Range
Dim xlSheet As Worksheet
Dim valueToFind
'se alterar qq cel. dif. A1 interrompe a execucao
If Target.Address <> "$A$1" Then Exit Sub
valueToFind = Target.Value
Set xlSheet = ActiveWorkbook.Worksheets("plan2")
Set xlRange = xlSheet.Range("D5:D3000")
For Each xlCell In xlRange
If xlCell.Value = valueToFind Then
xlCell.Interior.Color = vbRed 'colori a celula em vermelho
MsgBox xlSheet.Name & "!" & xlCell.Address & " ja existe !": Exit For
End If
Next xlCell
End Sub

Podem me ajudar?

 
Postado : 01/08/2015 8:35 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Eu fiquei em duvida, diz que está com dificuldade, mas não compreendi, sua rotina ja realiza a busca que deseja, então vou supor que está querendo colorir a celula A1 da plan1 tambem, outra situação, é que na rotina temos a linha :
MsgBox xlSheet.Name & "!" & xlCell.Address & " ja existe !" : Exit For
onde tem um Exit For, forçando a saida da rotina ao encontrar a primeira ocorrencia nos ranges definidos, se for isto tudo bem, mas se estiver querendo que pesquise todas as ocorrencias, tem de tirar o exit for, ficando :
MsgBox xlSheet.Name & "!" & xlCell.Address & " ja existe !"

Se for para colorir A1 na plan1 utilize a rotina abaixo:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xlRange As Range
    Dim xlCell As Range
    Dim xlSheet As Worksheet
    Dim valueToFind
    Dim sAchou As Boolean

    'se alterar qq cel. dif. A1 interrompe a execucao
    If Target.Address <> "$A$1" Then Exit Sub
    
    valueToFind = Target.Value
    Set xlSheet = ActiveWorkbook.Worksheets("plan2")
    Set xlRange = xlSheet.Range("D5:D16")
    
    For Each xlCell In xlRange
        
        If xlCell.Value = valueToFind Then
            xlCell.Interior.Color = vbRed 'colori a celula em vermelho
            sAchou = True
            'Se for pesquisar todas as ocorrencias apague : Exit For
            MsgBox xlSheet.Name & "!" & xlCell.Address & " ja existe !": Exit For
        End If
        
    Next xlCell
    
    'Pinta a celula A1 se achou valor igual
    If sAchou = True Then Target.Interior.Color = vbYellow
    
End Sub

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/08/2015 9:08 am
(@inove)
Posts: 3
New Member
Topic starter
 

OK vou testar, grato desde já.

 
Postado : 01/08/2015 7:05 pm
(@inove)
Posts: 3
New Member
Topic starter
 

Ficou ótimo deu certo, obrigado.

 
Postado : 03/08/2015 5:26 pm