Notifications
Clear all

Macro pra acrescentar Linhas

5 Posts
3 Usuários
0 Reactions
1,142 Visualizações
(@celri_33)
Posts: 0
Estimable Member
Topic starter
 

Pessoal,

Preciso de uma macro que com o critério que estará na coluna A, acrescente as linhas conforme pede.

No caso são notas fiscais, exemplo:

Coluna A tem o numero 7 então acrescentará mais 6 linhas e puxar as informações da primeira linha para as outras 6 no caso somando assim as 7 linhas, segue anexo exemplo:

 
Postado : 30/06/2016 8:45 am
(@osvaldomp)
Posts: 866
Prominent Member
 
Sub InsereLinhasIguais()
 Dim nf As Long
  For nf = 2 To Cells(Rows.Count, 1).End(3).Row
   If Cells(nf, 1) > 1 Then
    Cells(nf, 1).EntireRow.Copy
    Cells(nf + 1, 1).Resize(Cells(nf, 1) - 1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=True
    nf = nf + Cells(nf, 1) - 1
   End If
  Next nf
End Sub

Osvaldo

 
Postado : 30/06/2016 12:08 pm
(@celri_33)
Posts: 0
Estimable Member
Topic starter
 

Obrigado amigo, desculpe a demora, funcionou bem!!!

 
Postado : 05/07/2016 9:57 am
(@celri_33)
Posts: 0
Estimable Member
Topic starter
 

Pessoal, boa tarde!

Aqui de volta nesse post depois de tanto tempo, o que preciso?
Esse código esta indo até a linha 175 e do nada, ele para, como faço para que continua e ler e acrescentar as linhas conforme o critério da coluna A?

Este post foi modificado 4 anos atrás por Celri_33
 
Postado : 15/03/2021 3:53 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Bom dia, @celri_33

Não é uma boa técnica de programação mudar o valor do contador em laços For/Next, ainda mais nesse seu caso em que as linhas vão crescendo e se deslocando pra baixo. Então chega uma hora em que o número de linhas já inseridas somadas às já existentes até aquele ponto atinge ou ultrapassa o valor inicial previsto para a última linha, que era estático.

O melhor nesses casos é vir inserindo as linhas de baixo pra cima. Teste com essa alteração:

Sub InsereLinhasIguais()
 Dim nf As Long
 Application.ScreenUpdating = False
   For nf = Cells(Rows.Count, 1).End(3).Row To 2 Step -1
     If Cells(nf, 1) > 1 Then
       Cells(nf, 1).EntireRow.Copy
       Cells(nf + 1, 1).Resize(Cells(nf, 1) - 1).EntireRow.Insert Shift:=xlShiftDown
     End If
   Next nf
 Application.ScreenUpdating = True
End Sub

 
Postado : 16/03/2021 8:49 am