Como usar função &q...
 
Notifications
Clear all

Como usar função "Or' no Vba

8 Posts
4 Usuários
0 Reactions
1,388 Visualizações
(@everton-fk)
Posts: 9
Active Member
Topic starter
 

Bom dia galera,
estou tentando colocar um "OR" na seguinte macro:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
Application.EnableEvents = False
[G6] = Sheets("PLANILHA DE APOIO").[b2]
[G7] = Sheets("PLANILHA DE APOIO").[b3]
[G13] = Sheets("PLANILHA DE APOIO").[b4]
[G14] = Sheets("PLANILHA DE APOIO").[b5]
[G15] = Sheets("PLANILHA DE APOIO").[b6]
[G16] = Sheets("PLANILHA DE APOIO").[b7]
[G17] = Sheets("PLANILHA DE APOIO").[b8]
[G18] = Sheets("PLANILHA DE APOIO").[b9]
Application.EnableEvents = True
End If

End Sub
Eu queria que quando as células A2 ou d2 fossem alteradas a macro apresentasse o resultado.

 
Postado : 25/09/2015 8:04 am
Issamu
(@issamu)
Posts: 605
Honorable Member
 

Já testou com a alteração seguinte?

If Target.Address = "$A$2" Or Target.Address = "$D$2" Then

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 25/09/2015 8:19 am
(@everton-fk)
Posts: 9
Active Member
Topic starter
 

olá Rafael,
já tentei sim, mas não funcionou, eu esqueci de comentar que no caso a célula D2 está mesclada (D2:G2), não sei se isso faz diferença.

 
Postado : 25/09/2015 8:28 am
(@mprudencio)
Posts: 2749
Famed Member
 

Se eu entendi direito isso retorna um valor tipo um procv se for isso pq não usa um do while para fazer a pesquisa e retornar o que vc precisa, ou ate mesmo 1 procv se for direto em um a célula.

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 : 25/09/2015 9:39 am
Issamu
(@issamu)
Posts: 605
Honorable Member
 

olá Rafael,
já tentei sim, mas não funcionou, eu esqueci de comentar que no caso a célula D2 está mesclada (D2:G2), não sei se isso faz diferença.

Sim, faz diferença, pois o comando target.address vai retornar o endereço completo do intervalo mesclado. Assim, tente:

If Target.Address = "$A$2" Or Target.Address = "$D$2:$G$2" Then

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 25/09/2015 10:26 am
(@everton-fk)
Posts: 9
Active Member
Topic starter
 

Muito obrigado Rafael, funcionou perfeitamente.

 
Postado : 25/09/2015 10:49 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Issamu, irá fazer diferença se utilizar da forma que fez :

If Target.Address = "$A$2" Or Target.Address = "$D$2:$G$2" Then
Em celulas mescladas a captura do range se d á sempre pela primeira, ou seja se estão mescladas de"D2 a G2", Target.Adrres será sempre "D2", ou seja na instrução acima não funcionará pois devido Target.Adrres informar D2 a condição diz para continuar somente se for D2:G2.
Utize o F8 para seguir a rotina e ficara mais fácil compreender.

Everton, se utilizou conforme a primeira dica do Issamu, era para funcionar corretamente, a não ser que voce tenha algo de diferente na instrução que não indicou.

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

 
Postado : 25/09/2015 10:57 am
Issamu
(@issamu)
Posts: 605
Honorable Member
 

Issamu, irá fazer diferença se utilizar da forma que fez :

If Target.Address = "$A$2" Or Target.Address = "$D$2:$G$2" Then
Em celulas mescladas a captura do range se d á sempre pela primeira, ou seja se estão mescladas de"D2 a G2", Target.Adrres será sempre "D2", ou seja na instrução acima não funcionará pois devido Target.Adrres informar D2 a condição diz para continuar somente se for D2:G2.
Utize o F8 para seguir a rotina e ficara mais fácil compreender.

Everton, se utilizou conforme a primeira dica do Issamu, era para funcionar corretamente, a não ser que voce tenha algo de diferente na instrução que não indicou.

Olá Mauro! A principio achava que a propriedade .address se comportava da forma que você falou, porém ao testar o comando na janela de inspeção rápida percebi que não é bem assim.
A propriedade se comportará do jeito que você descreveu se utilizarmos o comando Activecell.Address, pois ai vai considerar a célula ativa, e mesmo estando mesclado, sempre trará o endereço de uma célula única, no caso a primeira célula superior esquerda do bloco mesclado. Agora se utilizar o comando Selection.Address percebi que o resultado é de fato o endereço completo do intervalo mesclado. Testando percebi que a variável Target do evendo em questão funciona como um Selection e não como Activecell, por isso que a minha solução proposta funcionou perfeitamente.

Abraços!

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 25/09/2015 11:55 am