Página 1 de 1

Macro com critério de texto em celulas.

Enviado: 24 Abr 2016 às 10:44
por Kevim2013
Existe alguma forma de fazer uma macro executar apenas se eu escrever em uma célula em específico algo especifico?


Exemplo
Na celula A1 escrevo "Executar"
Então executa todo o comando de macro.

Têm como fazer isso?

Re: Macro com critério de texto em celulas.

Enviado: 24 Abr 2016 às 11:30
por Kledison
Bom dia,

Verifica o anexo abaixo, toda vez que o valor de A1 for alterado, ele executa a macro.

No aguardo.

Macro com critério de texto em celulas.

Enviado: 24 Abr 2016 às 17:23
por EdivanCabral
Boa tarde!

Isso é possível sim, porém em apenas uma aba, na aba que você deseja use o seguinte comando:
Código: Selecionar todos
    Private Sub Worksheet_Change(ByVal Target As Range)

        If UCase(Target.Value) = "EXECUTAR" Then
            MsgBox "EXECUTAR"
        End If
        
       
    End Sub
Caso tenha dúvida baixe o exemplo:



Visite meu blog e meu canal no youtube.

programacaopassoapasso.wordpress.com

https://www.youtube.com/channel/UCbIAUS ... 2B5SGFDJgg

Macro com critério de texto em celulas.

Enviado: 25 Abr 2016 às 22:01
por Kevim2013
Ambos os 2 estão certos mas o que eu preciso em sí é misturar os 2.
Como assim?

Eu preciso de que ao escrever em uma celula especifica algo especifico. Ai sim chame a macro

Exemplo(tentei misturar os 2 mais num deu muito certo):

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" And UCase(Target.Value) = "Executar" Then

Call "Macro"
ElseIf Target.Adrres = "$A$1" And UCase(Target.Value) <> "Executar" Then
MsgBox ("Erro ao digitar a senha")
Else
Exit Sub

End If

End Sub


No meu caso não pode aparecer mensagens em qualquer outra celula apos inserir o código(Porque senão não teria como editar a aba, iaa aparecer mensagems de "erro" direto).
Nem trocar com qualquer coisa que o usuário inserir apenas com a palavra "Executar" que no caso eu vou trocar por uma senha numérica.

Desta forma é possivel?

Re: Macro com critério de texto em celulas.

Enviado: 26 Abr 2016 às 00:27
por Kledison
Olá,

tente assim:
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" And Target.Value = "Executar" Then
Call macro1 'coloque aqui a sua macro

ElseIf Target.Address = "$A$1" And Target.Value <> "Executar" Then
MsgBox ("Erro ao digitar a senha")

Else: Exit Sub
End If
End Sub
No aguardo.

Macro com critério de texto em celulas.

Enviado: 27 Abr 2016 às 12:00
por Kevim2013
Eu te agradeço pios funcionou, mas, se eu deletasse o valor do local iria aparecer "Erro na senha digite novamente."
E para ficar perfeitinho eu precisava que asim que escrevesse, mostrasse a Msgbox, depois chamasse a macro
ai após apagasse o valor de A1 Sem aparecer novamente a mensagem do "Erro ao digitar a senha"

E específicamente resutlndo se a pessoa escrever algo errado "Digte a senha novamente" e vai apagar o valor de a1 resultando em End Sub logo após apagar.

Sequencia verdadeira
1º Pessoa escreve "1234567" na celula a1.
2º Se a1 = 1234567 then call macro....( até ai é o antigo)
3º Apos chamar a macro delete a1 sem chamar Elseif

Sequencia falsa(Diferente da senha)
1º Se a1 <> "1234567" Então Msgbox("Digite a senha novamente")
2º Delete a1 sem chamar um loop de "Digite a senha novamente"(Quando se deleta a1 chamava essa mensagem infinitamente)
3º End sub

Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" And Target.Value = "1234567" Then
Call Macro1 'coloque aqui a sua macro
MsgBox ("Seja vem vindo a area de manutenção mensal da planilha")

ElseIf Target.Address = "$A$1" And Target.Value <> "1234567" Then


'Não sei como ou aonde poderia inserir o delete.'


MsgBox ("Digite a senha novamente")

Else: Exit Sub

End If

End Sub

E com a palavra "Executar" não funcionou deu erro formato incompativel.
Dado a isto troquei para uma senha numerica.

Agradeço a ajuda

Enviado: 30 Abr 2016 às 08:44
por Kevim2013
Dei meu jeito aqui pra não dar looping na mensagem quando deleta. Simplesmente colocando um (And Target.Value <> "") no Endif

Obrigado pela ajuda ^^.