Notifications
Clear all

Dúvida VBA Intervalo SpecialCells

12 Posts
3 Usuários
0 Reactions
1,921 Visualizações
(@mmessias)
Posts: 44
Eminent Member
Topic starter
 

Boa tarde!
Gente, sou nova no forum, cheguei a dar uma olhada nos outros tópicos mas não encontrei algo que me atendesse. Peço desculpas caso já exista algum tópico com este assunto, neste caso peço por gentileza que me direcionem rsrs.

O caso é o seguinte fiz essa macro para selecionar e pintar as células preenchidas no intervalo de A7:P27, mas agora preciso expandir a área do intervalo de modo que ele compreenda as áreas A7:P27 e também a A44:P61, mas não consigo fazer isso de maneira que funcione.

Alguém poderia me salvar? rs

Obrigada!

Sub Selecionar()

Dim Intervalo As Range

Set Intervalo = [A7].SpecialCells(xlTextValues)
Intervalo.Select
Selection.Interior.ColorIndex = 36

End Sub

 
Postado : 03/04/2013 10:33 am
chook
(@chook)
Posts: 197
Estimable Member
 

Boa tarde amiga, não sei se entendi corretamente mas lá vai.

Acho que é só isso:

Sub Selecionar()

Dim Intervalo As Range

Set Intervalo = [A7:P27].SpecialCells(xlTextValues)
Intervalo.Select
Selection.Interior.ColorIndex = 36

Set Intervalo = [A44:P61].SpecialCells(xlTextValues)
Intervalo.Select
Selection.Interior.ColorIndex = 36

End Sub

Atenciosamente,

Alex Lacerda
[email protected]

 
Postado : 03/04/2013 11:01 am
(@mmessias)
Posts: 44
Eminent Member
Topic starter
 

Funcionou!! :D

Eu tinha feito isso antes,mas com certeza fiz errado, rs. Colando a sua versão funcionou perfeitamente rs.
O problema era a peça entre a cadeira e o computador mesmo rsrs.

Muito obrigada pela ajuda!

Att.

 
Postado : 03/04/2013 11:08 am
(@mmessias)
Posts: 44
Eminent Member
Topic starter
 

Amigo, agora apareceu um problema:
Se, por algum motivo, em algum dos intervalos não existir ao menos uma célula preenchida, ele dá erro.
Só funciona perfeitamente se ambos os intervalos possuirem células preenchidas. :|

Saberia me informar alguma outra maneira?

Desde já agradeço.

Atenciosamente,

 
Postado : 03/04/2013 11:44 am
(@alminen)
Posts: 77
Trusted Member
 

Você realmente precisa da propriedade SpecialCells? Caso não, só removê-la e a macro vai pintar esse intervalo, independente de ter valores ou não.
Caso sim, você pode mandar resumir, caso dê erro.
Assim:

Sub Selecionar()

Dim Intervalo As Range

On Error Resume Next

Set Intervalo = [A7:P27].SpecialCells(xlTextValues)
Intervalo.Select
Selection.Interior.ColorIndex = 36

Set Intervalo = [A44:P61].SpecialCells(xlTextValues)
Intervalo.Select
Selection.Interior.ColorIndex = 36

End Sub

Ele vai continuar a rotina, mesmo dando algum erro.

 
Postado : 03/04/2013 11:57 am
(@mmessias)
Posts: 44
Eminent Member
Topic starter
 

Testei aqui e, realmente não dá mais erro, no entanto a macro acaba fazendo uma coisa errada:
as duas áreas A7:P27 e A44:P61 se tratam de dois formulários que precisam ficar na mesma planilha. E esta macro precisa selecionar e pintar apenas as células com preenchimento em ambos os intervalos.

Estes formulários podem ser preenchidos assim: somente o primeiro, somente o segundo, ou ambos.

Nesta que você enviou ele seleciona e pinta as células preenchidas em ambas e as do primeiro formulário, no segundo formulário ele seleciona e pinta as células preenchidas e a célula que você selecionou por último, portanto acaba sobrando uma célula formatada vazia.

Na vdd não sei muito sobre vba, pode ser outro meio além do SpecialCells contanto que satisfaça essas condições.

Espero ter conseguido explicar mais ou menos...

Desde já agradeço a ajuda.

Att.

 
Postado : 03/04/2013 12:28 pm
(@alminen)
Posts: 77
Trusted Member
 

Seria interessante entender mais algumas coisas, e, se for possível, anexar aqui um exemplo da planilha (se tiver dados privados, mude-os por fictícios).

1. Você precisa que a macro ou pinte ou o formulário de cima, ou o de baixo, ou ambos?
2. É necessário que ele pinte toda essa área delimitada para o formulário, ou apenas os campos onde exista algum valor, como ela já está fazendo?

 
Postado : 03/04/2013 1:04 pm
(@mmessias)
Posts: 44
Eminent Member
Topic starter
 

Então ela precisa pintar ambas, caso ambas possuam células com preenchimento, do contrário, apenas o formulário que possuir células preenchidas.
Farei uma outra planilha fictícia e posto aqui, acredito que será mais fácil mesmo. rsrs
Muito obrigada.

 
Postado : 03/04/2013 1:17 pm
(@alminen)
Posts: 77
Trusted Member
 

Poste via opção "Anexar", por favor. Não tenho acesso a links externos por aqui =)
Última dúvida. Se houver célula preenchida, pintar o formulário TODO ou apenas as células preenchidas?

 
Postado : 03/04/2013 1:27 pm
(@mmessias)
Posts: 44
Eminent Member
Topic starter
 

Fiz a planilha.

Ela possui 4 macros:

desfazer formatação - que volta às células à formatação em branco sem apagar os dados.
Marcar Texto: que é a macro que estamos tentando fazer, que deveria pintar de amarelo apenas as células preenchidas naquele intervalo.
Conferir: Pinta a célula ativa de branco e vai para a linha abaixo.
Limpar dados: apaga os dados e volta a formatação para branco.

Teste assim: coloque um valor qualquer em ambos os formulário e clique em marcar texto.
Depois coloque qualquer valor apenas no formulário 1 e marque o texto.
Feito isso, coloque qualquer valor apenas no formulário 2, e marque o texto. Daí você poderá ver que, além das células com valores, ele pinta também a célula que você selecionou por último.Esse é o erro que preciso corrigir.

Muito obrigada pela ajuda!!

 
Postado : 03/04/2013 1:41 pm
(@alminen)
Posts: 77
Trusted Member
 

O arquivo que você enviou veio sem os módulos de macro.

Para todos os efeitos, tirei o critério para selecionar (de fato SELECIONAR a célula) para apenas pintar as preenchidas. Veja se é suficiente:

Sub Selecionar()

Dim Intervalo As Range

On Error Resume Next

Set Intervalo = [A7].SpecialCells(xlTextValues)
Intervalo.Interior.ColorIndex = 36

Set Intervalo = [A44].SpecialCells(xlTextValues)
Intervalo.Interior.ColorIndex = 36
End Sub
[/code}

 
Postado : 03/04/2013 1:49 pm
(@mmessias)
Posts: 44
Eminent Member
Topic starter
 

Boa Noite!

Desculpe a demora para responder, só fui ter acesso à internet agora.
Nossa que estranho, abri a planilha e tb não deu certo rs, desculpe por isso.

Testei a sua macro aqui e funcionou perfeitamente!

Muito obrigada pela ajuda! Você me salvou hehe

Att.

 
Postado : 03/04/2013 8:40 pm