Notifications
Clear all

Repetir MACRO de FORMATAÇÃO em várias linhas COM condição IF

6 Posts
4 Usuários
0 Reactions
1,293 Visualizações
(@maxnet)
Posts: 0
New Member
Topic starter
 

Pessoal, fiz uma macro que está funcionando bem, no entanto o arquivo está muito grande, pois utilizo este código (além de outros) em 45 planilhas. O que preciso é o seguinte: Que a macro verifique na COLUNA C a PARTIR da linha 2 (C2) até a linha 300 (C300) (ou até não achar mais nada). Em cada linha, se encontrar "#" (na coluna C) quero que formate as células do lado direito (ex: ao lado do C2, formatar, mesclar e centralizar D2+E2+F2+G2... e EM SEGUIDA, se tiver "#" na C3,, formatar, mesclar e centralizar D3+E3+F3+G3 e assim por diante...) e SE NÃO FOR igual a "#", que aplique a formatação inversa (desmesclar), pois é uma situação que muda semanalmente...

O código, eu fiz, porém fiz do meu jeito (DE GENTE LEIGA EM EXCEL rs rs rs). Gostaria que a galera que sabe um pouco mais, que me ajudasse a diminuir o tamanho da fórmula, pois para cada linha eu tenho que colocar o código todo e trocar o NÚMERO da linha. SÃO 300 LINHAS, galera... e 45 planilhas diferentes... rs rs...

Basicamente é essa a dúvida, se houver SOLUÇÃO, vai dar uma reduzida boa no tamanho do arquivo, pois vou aplicar em outras macros que formatam as duas primeiras e as duas ultimas apenas (D2+E2) (F2+G2) caso encontre "%" na mesma coluna C. As opções possíveis na coluna C são: "#", OU "%", OU "@". Ela é preenchida usando a função SENAODISP() com outras funções agregadas (SEERRO, PROCH, etc). (# mescla as 4 células, % mescla as 2 primeiras e as 2 últimas, e @ vai chamar outra função).

Tenho certeza que APESAR DA DÚVIDA COM TEXTO GRANDE, a resposta é simples PRA QUEM ENTENDE DO ASSUNTO... (que não é o meu caso...rs rs)

Segue o código que uso:

Sub Mescla_4_Centraliza()
Application.DisplayAlerts = False

' INÍCIO do Código para a linha 3
If Range("C3").Value = "#" Then
Range("D3:G3").Select
With Selection
.HorizontalAlignment = xlCenter
.MergeCells = True
End With

Else

Range("D3:G3").Select
With Selection
.HorizontalAlignment = xlCenter
.MergeCells = False
End With
End If

' FIM do Código para a linha 3

Application.DisplayAlerts = True
End Sub
 
Postado : 18/09/2016 10:22 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde Maxnet

Seja bem-vindo ao fórum!

Para facilitar a tua participação no fórum, sugiro tomar conhecimento do conteúdo dos links abaixo:
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

Quanto a dúvida, facilitaria se você anexasse uma planilha de exemplo, pois acredito que o pessoal consiga reduzir até as fórmulas da planilha.

[]s

 
Postado : 18/09/2016 10:51 am
(@mprudencio)
Posts: 0
New Member
 

Posta o arquivo q facilita

 
Postado : 18/09/2016 2:32 pm
(@maxnet)
Posts: 0
New Member
Topic starter
 

A planilha original é muito grande. Fiz uma parecida para enviar.

A macro funciona. O problema é que fica gigante com a repetição dos códigos.
Eu não sei COMO FAZER, mas tenho CERTEZA que existe um código que RESUMA TUDO em poucas linhas, pois a programação é FASCINANTE!!!!!!!

Max

 
Postado : 18/09/2016 3:42 pm
(@brunoxro)
Posts: 0
New Member
 

Boa noite MaxNet,

Veja se é o que deseja, o código está no módulo 1.

att,

 
Postado : 18/09/2016 7:30 pm
(@maxnet)
Posts: 0
New Member
Topic starter
 

Perfeito, brunoxro. Exatamente o que preciso. Reduziu bastante o código.

 
Postado : 19/09/2016 12:25 pm