Notifications
Clear all

Por que estas duas macros "quase" funcionam?

4 Posts
3 Usuários
0 Reactions
950 Visualizações
(@jalexm)
Posts: 77
Estimable Member
Topic starter
 

Olá.
Não sou muito bom com macros, mas criei as macros abaixo baseando em exemplos aqui do fórum e outros locais da Internet.
Elas servem apenas para incluir uma linha acima ou uma linha abaixo, mantendo os detalhes da linha atual em que está o cursor do Excel (cores, fonte, etc.).

Elas estão "quase" funcionando, mas apresentam os seguintes problemas:

- InserirLinhaAbaixo: quando a linha atual é a que fica antes do rodapé, ao executar a macro com CTRL-B, o cursor fica sempre na primeira coluna da nova linha, quando deveria se manter na mesma coluna em que estava. Nas outras linhas isso não acontece.

- InserirLinhaAcima: quando a linha atual é a primeira após a linha de título, ao executar a macro com CTRL-A, as listas suspensas não são incluídas na nova linha. Só acontece com essa linha, para as outras isso não ocorre.

Alguém poderia ajudar a resolver isso?
Agradeço muito.

Obs.: segue em anexo uma pequena planilha como exemplo:

Public Sub InserirLinhaAbaixo()
   Dim coluna As Long
   Dim linha  As Long

   ActiveCell.Offset(1, 0).Select
   coluna = ActiveCell.Column
   linha = ActiveCell.Row
   ActiveCell.Offset(0, 0).Rows("1:1").EntireRow.Select
   Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
   ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
   Selection.Copy
   ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
   Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
   Application.CutCopyMode = False
   Cells(linha, coluna).Select
End Sub

Public Sub InserirLinhaAcima()
   Dim coluna As Long
   Dim linha  As Long

   coluna = ActiveCell.Column
   linha = ActiveCell.Row
   ActiveCell.Rows("1:1").EntireRow.Select
   Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
   ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
   Selection.Copy
   ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
   Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
   Application.CutCopyMode = False
   Cells(linha, coluna).Select
End Sub
 
Postado : 13/02/2014 8:58 am
(@weslley)
Posts: 90
Trusted Member
 

Alterei 2 duas linhas do código que vc criou.
Verifica se o efeito corresponde a sua expectativa.

 
Postado : 13/02/2014 10:24 am
(@jalexm)
Posts: 77
Estimable Member
Topic starter
 

Alterei 2 duas linhas do código que vc criou.
Verifica se o efeito corresponde a sua expectativa.

Meu amigo, funcionou perfeitamente!
Estava quebrando a cabeça há um bom tempo.
Agradeço MUITO a sua ajuda.
Valeu!

 
Postado : 13/02/2014 11:08 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Caso seja necessário reabrir o tópico, o autor poderá enviar uma MP para um dos moderadores solicitando o desbloqueio.

 
Postado : 13/02/2014 2:59 pm