Notifications
Clear all

Macro Para Formatação de Células de Uma Linha Qualquer

13 Posts
1 Usuários
0 Reactions
3,878 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal,

alguém poderia me ajudar com uma macro que desproteja (planilha), altere o padrão (para Horizontal Listrado Fina - cor azul gelo), passe o estilo da fonte para negrito, bloqueie e proteja (planilha). O principal detalhe é o seguinte: as células a serem formatadas estão em colunas já determinadas (fixas), mas a linha deverá ser igual a da célula ativa. Ao final da formatação das células e antes da proteção da planilha a deixar selecionada a primeira célula da linha da célula ativa.

Espero ter sido claro.

Grato,

glim

 
Postado : 03/11/2010 9:19 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Glim,
Se você for lá em ferramentas>Macros>gravar macros, e realizar esse procedimento que você quer é mais facil. Fazendo isso a macro já ficará salva, e de uma proxima vez que você precisar formatar só executa-la novamente

 
Postado : 03/11/2010 1:01 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 


Caio... não é assim tão simples, pois com o gravador de macros por padrão, vai fixar a linha.
Entretanto, a recomendação é excelente no sentido de que, com o gravador, é possível depreender algumas linhas de comandos.

Neste caso, poderia utilizar uma variável para a linha:

lin = ActiveCell.Row

Em seguida, selecionar o intervalo (por exemplo, se fosse da coluna D à I):

Range("D" & lin & ":I" & lin).Select

E aplicar as formatações e depois selecionar a primeira célula do intervalo:

Range("D" & lin).Activate

 
Postado : 03/11/2010 4:38 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal,

de antemão agradeço as sugestões e vou tentar criá-las.

Gustavo

 
Postado : 03/11/2010 5:31 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal,

Estou tendo problemas com a seleção do intervalo (na verdade as colunas não formam um intervalo contínuo, mas sim cols B-I, L-R e U-BE). Tentei

Range("B" & lin & ":I" & lin, "L" & lin & ":R" & lin, "U" & lin & ":BE" & lin).Select

Mas dá erro. Se fosse apenas um intervalo funcionaria.

Como sou novo em macros, tenho a esperança que trata-se de erro com os separadores.

Ademais para selecionar a primeira coluna (A) da linha, após os ajustes desejados tb ocorreu erro, utilizei o seguinte: Range("A"&lin).Activate.

:?:

Desde já agradeço mais uma vez.

Gustavo.

 
Postado : 03/11/2010 8:03 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 


Glim...
veja se é isso?

Sub Macro1()

ActiveSheet.Unprotect ("123")

lin = ActiveCell.Row
Range("B" & lin & ":I" & lin & ",L" & lin & ":R" & lin & ",U" & lin & ":BE" & lin).Select
Selection.Font.Bold = True

With Selection.Interior
.Pattern = xlLightHorizontal
.PatternColorIndex = 34
End With

Range("A" & lin).Activate

ActiveSheet.Protect ("123")

End Sub

 
Postado : 04/11/2010 6:15 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Edson,

tudo funcionou perfeitamente. Grato pela excelente ajuda.

Valeu.

Gustavo

 
Postado : 04/11/2010 8:23 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Edson,

só mais um esclarecimento, se for possível. Pode-se não permitir que essa macro atue sobre a primeira linha, pois ela corresponde a linha de título e possui formatação fixa.

Gustavo

 
Postado : 04/11/2010 9:42 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Suponho que deva ser um pouco mais complicado. Seria atraves de comdando IF (se é que ele existe em VBA), oa lagoritmo seria algo do tipo

IF lin =1 faça na nada,

else ....

???

Gustavo

 
Postado : 04/11/2010 9:46 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Edson,
Ahh pode cre não tinha me atentado ao que ele tinha pedido.

Glim

tenta assim..
ActiveSheet.Unprotect ("123")

lin = ActiveCell.Row
If lin <> 1 Then

Range("B" & lin & ":I" & lin & ",L" & lin & ":R" & lin & ",U" & lin & ":BE" & lin).Select
Selection.Font.Bold = True

With Selection.Interior
.Pattern = xlLightHorizontal
.PatternColorIndex = 34
End With

Range("A" & lin).Activate

ActiveSheet.Protect ("123")
Else
End If

 
Postado : 04/11/2010 5:45 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caio,

Funcionou perfeitamente. Agradeço pela dica.

Glim.

 
Postado : 04/11/2010 8:24 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal,

Me deparei com outra situação, desta vez. Durante a alimentação da planilha, percebi que a alteração da formatação a cada linha é um pouco inviável, como faria para selecionar várias linhas (seleção de uma matriz, onde alteraria-se a formatação das suas linhas, não totalmente, mas naquelas mesmas colunas mencionadas anteriormente) e aplicar a formatação de uma vez só.

Abraços,

Glim.

 
Postado : 14/11/2010 9:24 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal, alguém tem alguma ideia :?: . Vou tentar explicar melhor: A partir da seleção de uma matriz, a macro identificaria as linhas envolvidas na seleção e alteraria a formatação de algumas células dessas linhas (cruzamento das linhas com colunas definidas = fixas).

Help... :(

Abraços,

Glim

 
Postado : 18/11/2010 9:41 am