Macro com Validação...
 
Notifications
Clear all

Macro com Validação de Dados

9 Posts
3 Usuários
0 Reactions
1,456 Visualizações
(@rfgumieri)
Posts: 5
Active Member
Topic starter
 

Prezados, bom dia!

Estou com um problema para resolver:

Tenho uma planilha onde a célula A2 está com validação de dados, cujo os dados são: "Texto 1" ; "Texto 2"

Preciso que apareça um MsgBox de informação em cada seleção.

Exemplo: Quando a pessoa seleciona "Texto 1" aparece um MsgBox Yes ou No com uma informação "Você selecionou Texto 1, se sim clique em Sim"

Grato pela ajuda

Att

 
Postado : 07/07/2016 9:03 am
(@mprudencio)
Posts: 2749
Famed Member
 

Cole esse codigo no modulo da planilha


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Texto As String
Dim Resposta As String

Texto = Range("A2").Value

Resposta = MsgBox(Texto & Chr(13) & "Se voce selecionou" & " " & Texto & Chr(13) & "Clique Sim", vbYesNo, "Atenção")

End Sub

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 07/07/2016 9:35 am
(@rfgumieri)
Posts: 5
Active Member
Topic starter
 

Obrigado pela resposta!

Preciso incluir uma função If, como exemplo:

Se texto = café
Msgbox "Você selecionou café"
Se texto = "água"
Msgbox "Você selecionou água"
Se texto = ""
Não faz nada!

Att

 
Postado : 07/07/2016 11:01 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Aproveitando a dica do Marcelo, troque a rotina pela a abaixo :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Texto As String
    Dim Resposta As String
    
    Texto = Range("A2").Value
    
    Resposta = MsgBox(Texto & Chr(13) & "Se voce selecionou" & " " & Texto & Chr(13) & "Clique Sim", vbYesNo, "Atenção")
    
    If x = 6 Then
    
    ElseIf Resposta = 7 Then
    
        Application.EnableEvents = False
        
        Range("C2").Value = ""
        
        Application.EnableEvents = True
    
        Exit Sub
    
    End If

End Sub

[]s

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

 
Postado : 07/07/2016 12:48 pm
(@rfgumieri)
Posts: 5
Active Member
Topic starter
 

Não deu certo!

O problema que ao modificar outras células está executando a macro, sempre perguntando, mesmo sem modificar a célula.

Veja como está o meu, está quase certo:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Texto As String
Dim Resposta As String
Dim Resultado As String
Texto = Range("A2").Value
If Sheets("TAP").Range("A2").Value = "Aquisição" Then
Resultado = MsgBox("Aquisição", vbYesNo + vbInformation, Texto)
If Resultado = vbNo Then Selection.ClearContents
Else
If Sheets("TAP").Range("A2").Value = "Projeto" Then
Resultado = MsgBox("Projeto", vbYesNo + vbInformation, Texto)
If Resultado = vbNo Then Selection.ClearContents
Else
Exit Sub
End If
End If
End Sub

 
Postado : 07/07/2016 1:13 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Troque por esta:

Private Sub Worksheet_Change(ByVal Target As Range)
        
        Dim Texto As String
        Dim Resposta As String
       
        If Target.Address = "$A$2" Then
        
            Texto = Range("A2").Value
            
            Resposta = MsgBox(Texto & Chr(13) & "Se voce selecionou" & " " & Texto & Chr(13) & "Clique Sim", vbYesNo, "Atenção")
            
            If x = 6 Then
            
            ElseIf Resposta = 7 Then
            
                Application.EnableEvents = False
                
                Range("A2").Value = ""
                
                Application.EnableEvents = True
            
                Exit Sub
            
            End If

        End If
        
    End Sub

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

 
Postado : 07/07/2016 1:33 pm
(@rfgumieri)
Posts: 5
Active Member
Topic starter
 

Como exemplo na minha planilha.

Caso eu escolher um item, deve ser escrito uma coisa e quando escolho o outro deve ser escrito outra coisa.

Não é utilizando a mesma MsgBox é um "IF"

 
Postado : 07/07/2016 2:00 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Tenta assim

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Texto As String
Dim Resposta As String

If Target.Column <> 1 Then Exit Sub

Texto = Range("A2").Value

If Texto = "" Then Exit Sub

Resposta = MsgBox(Texto & Chr(13) & "Se voce selecionou" & " " & Texto & Chr(13) & "Clique OK", vbokonly, "Atenção")


End Sub



Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 07/07/2016 2:30 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Como exemplo na minha planilha.
Caso eu escolher um item, deve ser escrito uma coisa e quando escolho o outro deve ser escrito outra coisa.

Não é utilizando a mesma MsgBox é um "IF"

Não entendi, no primeiro post você disse:
Exemplo: Quando a pessoa seleciona "Texto 1" aparece um MsgBox Yes ou No com uma informação "Você selecionou Texto 1, se sim clique em Sim"

O que quer dizer com :
Caso eu escolher um item, deve ser escrito uma coisa e quando escolho o outro deve ser escrito outra coisa.

Se quer utilizar a sua rotina em vez da que eu indiquei, troque pela a abaixo ;

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Texto As String
    Dim Resposta As String
    Dim Resultado As String
    
    If Target.Address = "$A$2" Then
        
        Texto = Range("A2").Value
    
        If Sheets("Plan1").Range("A2").Value = "Aquisição" Then
            
            Application.EnableEvents = False
            
            Resultado = MsgBox("Aquisição", vbYesNo + vbInformation, Texto)
            
            If Resultado = vbNo Then Selection.ClearContents
            
            Else
                
                If Sheets("Plan1").Range("A2").Value = "Projeto" Then
                    
                    Application.EnableEvents = False
                    Resultado = MsgBox("Projeto", vbYesNo + vbInformation, Texto)
                    
                   
                    If Resultado = vbNo Then Selection.ClearContents
                    
                    Else
                        Exit Sub
                    End If
            End If
        
    End If
    
    Application.EnableEvents = True
    
End Sub

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

 
Postado : 07/07/2016 8:23 pm