Macro de inserção d...
 
Notifications
Clear all

Macro de inserção de linha com copia com Erro

13 Posts
2 Usuários
0 Reactions
2,145 Visualizações
(@cgoetze)
Posts: 22
Eminent Member
Topic starter
 

Olá pessoal tenho a seguinte macro que foi "gravada" e testada inúmeras vezes sem problemas. Ela copia, cola e apaga de uma planilha para outra, através de um botão para cada linha.
Após isto foi gerando as macros para as linhas subsequentes copiando e colando em novos módulos alterando se as linhas e o nome dos módulos. (190 módulos para ser mais exato).
Abaixo uma das MACROS:

Sub GRAVARHISTORICO139()
'
' GRAVARHISTORICO 139 Macro
'

'
Range("A141:G141").Select
Selection.Copy
Sheets("HISTÓRICO INTERVENÇÕES").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Range("A2").Select
Sheets("REGISTRO").Select
Range("B141:I141").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("A1:A2").Select
ActiveWorkbook.Save
End Sub

Agora estão aparecendo erros na tela pedindo para depurar o seguinte comando:
Selection.Insert Shift:=xlDown
O estranho é que o erro acontece de vez em quando, e as vezes é só abrir e fechar a planilha que volta a funcionar sem erro.
Se precisar refazer algum comando, posso refazer/substituir em todos, em alguma tela, ou terei de fazer um por um dos módulos?

Obrigado.

 
Postado : 28/04/2015 1:47 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Olá pessoal tenho a seguinte macro que foi "gravada" e testada inúmeras vezes sem problemas. Ela copia, cola e apaga de uma planilha para outra, através de um botão para cada linha.
Após isto foi gerando as macros para as linhas subsequentes copiando e colando em novos módulos alterando se as linhas e o nome dos módulos. (190 módulos para ser mais exato).
Abaixo uma das MACROS:

Sub GRAVARHISTORICO139()
'
' GRAVARHISTORICO 139 Macro
'

'
Range("A141:G141").Select
Selection.Copy
Sheets("HISTÓRICO INTERVENÇÕES").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Range("A2").Select
Sheets("REGISTRO").Select
Range("B141:I141").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("A1:A2").Select
ActiveWorkbook.Save
End Sub

Agora estão aparecendo erros na tela pedindo para depurar o seguinte comando:
Selection.Insert Shift:=xlDown
O estranho é que o erro acontece de vez em quando, e as vezes é só abrir e fechar a planilha que volta a funcionar sem erro.
Se precisar refazer algum comando, posso refazer/substituir em todos, em alguma tela, ou terei de fazer um por um dos módulos?

Obrigado.

Sem ver o modelo, só posso supor que na aba que está utilizando o comando para inserir mais linhas (Selection.Insert Shift:=xlDown) ela já esteja sem espaço, e assim como não é possivel inserir mais linhas temos o erro.
É só uma suposição, então de uma olhada nas abas.

[]s

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

 
Postado : 28/04/2015 1:59 pm
(@cgoetze)
Posts: 22
Eminent Member
Topic starter
 

Lhe enviei por e-mail....

 
Postado : 28/04/2015 2:11 pm
(@cgoetze)
Posts: 22
Eminent Member
Topic starter
 

Acho que não...
Anexo.

 
Postado : 28/04/2015 2:17 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Qual versão do excel foi feito o arquivo ? Uso o 2007 e o arquivo da erro.

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

 
Postado : 28/04/2015 6:10 pm
(@cgoetze)
Posts: 22
Eminent Member
Topic starter
 

2013

 
Postado : 28/04/2015 6:41 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

2013

Então teremos de aguardar algum outro colega que tenha esta versão.

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

 
Postado : 28/04/2015 6:45 pm
(@cgoetze)
Posts: 22
Eminent Member
Topic starter
 

Comecei de novo... e criei outra macro:

Sub GHIST1()
'
' GHIST1 Macro
'

'
Sheets("HISTÓRICO INTERVENÇÕES").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrBelow
Range("A1").Select
Sheets("REGISTRO").Select
Range("A3:G3").Select
Selection.Copy
Sheets("HISTÓRICO INTERVENÇÕES").Select
Range("A2").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("REGISTRO").Select
Range("B3:I3").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("A1").Select
End Sub

Minha pergunta tem como o botão utilizar a linha em que ele está? No exemplo a seleção A3:G3 e posteriormente B3:I3, para eu não precisar criar uma macro para cada linha? Por exemplo o botão da linha de baixo pegaria A4:G4 e B4:G4...."vincular o botão a linha".

 
Postado : 28/04/2015 6:56 pm
(@cgoetze)
Posts: 22
Eminent Member
Topic starter
 

Anexei o arquivo de novo... tenta ae.

 
Postado : 28/04/2015 6:57 pm
(@cgoetze)
Posts: 22
Eminent Member
Topic starter
 

Pensando aqui, outra opção seria criar somente um botão, este botão pegaria uma condicional da coluna "J" (exemplo texto: "concluído"), e moveria todas as linhas (colunas A até G), com esta condição, para a outra planilha, e após isto esta mesma macro apagaria as linhas, só que desta vez considerando as colunas A até J.

 
Postado : 28/04/2015 8:49 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

cgoetze, eu não tenho a versão 2013, então nao consigo abrir seu arquivo, se tiver como salvar na versão 2007, posso ver.

Pelo que vi em sua rotina, você quer copiar da aba "REGISTRO" para a aba "HISTÓRICO INTERVENÇÕES", sendo assim não precisaria estar usando tantos Select e Copy, poderia ajustar utilizando o Copy Destination, mas para isto teria de ver o seu modelo e entender melhor o que quer.

[]s

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

 
Postado : 28/04/2015 11:20 pm
(@cgoetze)
Posts: 22
Eminent Member
Topic starter
 

Anexei o Arquivo no formato .XLS

Resumindo:

Comecei de novo... e criei outra macro:

Sub GHIST1()
'
' GHIST1 Macro
'

'
Sheets("HISTÓRICO INTERVENÇÕES").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrBelow
Range("A1").Select
Sheets("REGISTRO").Select
Range("A3:G3").Select
Selection.Copy
Sheets("HISTÓRICO INTERVENÇÕES").Select
Range("A2").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("REGISTRO").Select
Range("B3:I3").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("A1").Select
End Sub

Minha pergunta tem como o botão utilizar a linha em que ele está? No exemplo a seleção A3:G3 e posteriormente B3:I3, para eu não precisar criar uma macro para cada linha? Por exemplo o botão da linha de baixo pegaria A4:G4 e B4:G4...."vincular o botão a linha".
Outra opção, até melhor e mais fácil acho:
Criar somente um botão, este botão pegaria uma condicional da coluna "J" (exemplo texto: "concluído"), e moveria todas as linhas (colunas A até G), com esta condição, para a outra planilha, e após isto esta mesma macro apagaria as linhas, só que desta vez considerando as colunas A até J.

 
Postado : 29/04/2015 5:45 am
(@cgoetze)
Posts: 22
Eminent Member
Topic starter
 

Vou considerar este tópico resolvido, vou abrir outro tópico, pois o assunto/problema do título foi alterado.

 
Postado : 30/04/2015 5:29 am