Notifications
Clear all

Corrigir a sequência

13 Posts
3 Usuários
0 Reactions
1,362 Visualizações
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Boa tarde !

Como faço para corrigir a sequência automaticamente depois de excluir algums linhas, como no exemplo da imagem exclui as linhas referente a numeração 3 e 4.
Então ao excluir ficou assim 1,2,5,6 e gostaria assim 1,2,3,4

Aproveitando o tópico gostaria que a linha fosse inserida de cima para baixo começando da linha 12, pois conforme a segunda imagem está inserido na última linha

Obrigado desde já !

 
Postado : 30/03/2016 10:50 am
(@edcronos2)
Posts: 346
Reputable Member
 

tente usar formula
wsAtiva.Cells(UltL + 1, 2).FormulaLocal = "=B" & UltL & "+1"

 
Postado : 30/03/2016 11:20 am
(@edcronos2)
Posts: 346
Reputable Member
 

ops, errei aqui,
eu esqueci que ao excluir as formulas perdem a referencia
então deveria saber o processo de exclusão para o acomodamento dos valores

 
Postado : 30/03/2016 11:27 am
(@edcronos2)
Posts: 346
Reputable Member
 

pode usar essa formula
wsAtiva.Cells(UltL + 1, 2).FormulaLocal = "=indireto(" & """" & "B" & """" & "&lin() - 1 )+1"

assim não vai importar o processo de exclusão da linha

 
Postado : 30/03/2016 11:55 am
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Legal Edcronos deu certo !
Me diz uma coisa, está inserindo linha na última, pois como faço para fazer a contrário ?
Quero inserir da linha 12
Ex: inseri uma linha na 12, quando inserir outra linha na 12, a 12 passa ser a 13 e assim vai
Conclusão: inserindo de cima para baixo, onde que pensei em usar Orientation = xlTopToBottom

Obrigado desde já

 
Postado : 30/03/2016 3:00 pm
(@edcronos2)
Posts: 346
Reputable Member
 

entendi nada kkk
é uma formula com indireto que soma o valor da linha de cima , então não importa onde cole ela vai ser a mesma coisa
LIN() -1 é a linha onde está a formula -1 oq dá a de cima , o indireto junta tudo e tira problemas de referencia só ia dar problema se colocar na linha 1 pq não existe a linha 0

 
Postado : 30/03/2016 3:11 pm
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Você não entendeu, apenas queria saber como inserir linha de cima para baixo, pois desse modo que eu fiz inseri depois da última linha preenchida

 
Postado : 30/03/2016 5:02 pm
(@edcronos2)
Posts: 346
Reputable Member
 

cara tanto faz, se a parte de baixo tiver formula e vc adicionar uma linha na parte de cima a de baixo vai se auto ajustar com essa nova linha
é apenas uma formula
o unico porem é se adicionar uma linha em brando , aí a formula vai começar como 1 pq celula limpa é como 0 , ou até uma com letras aí vai dar erro de formula já que não tem como somar 1 na letra

 
Postado : 30/03/2016 5:34 pm
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Você não entendeu ainda, seu código está correto, pois estou dizendo como fazer para linha ser inserida de cima para baixo.
Se eu deixar assim terei que rolar a barra de rolagem para ver a última linha quando esticer grande, agora se inserir de cima para baixo, sempre estará no topo da planilha.

 
Postado : 30/03/2016 6:10 pm
(@edcronos2)
Posts: 346
Reputable Member
 

cara vc complica
vc quer adicionar a linha sempre pela linha 12 fazendo as outras descer?
1º vc está tratando algo diferente ao tópico e 2º escolhendo pessimamente as palavras "parece até eu kkk"

ainda não sei se entendi mas acho que em vez disso

Sub InserirLinha()
Dim wsAtiva As Worksheet
Dim UltL    As Long
    Set wsAtiva = ThisWorkbook.ActiveSheet
    UltL = Application.WorksheetFunction.Max(10, wsAtiva.Cells(Rows.Count, 2).End(xlUp).Row)
    wsAtiva.Range(Cells(1, 1), Cells(1, 7)).Copy: wsAtiva.Cells(UltL + 1, 1).Insert Shift:=xlDown

    wsAtiva.Cells(UltL + 1, 2).Value = wsAtiva.Cells(UltL, 2).Value + 1
    wsAtiva.Cells(1, 2).Value = wsAtiva.Cells(UltL, 2).Value + 2

    Application.CutCopyMode = False
    Set wsAtiva = Nothing
   
End Sub

como a macro vai ser usada sempre na aba ativa não precisa daquela parafernália toda que vc colocou

acho que pode ficar apenas assim

Sub InserirLinha()
   Rows(12).Insert Shift:=xlDown
    Cells(12, 2).FormulaLocal = "=indireto(" & """" & "B" & """" & "&lin() - 1 )+1"
End Sub
 
Postado : 30/03/2016 8:23 pm
Trindade
(@trindade)
Posts: 278
Reputable Member
 

Desculpa intrometer na troca de ideia dos senhores ...
Mas acho que seria isso que esta querendo vonzuben

Troque seu código por esse abaixo e realize o teste, se atende sua necessidade.

Sub InserirLinha()
Dim wsAtiva As Worksheet
Dim UltL    As Long
Dim i       As Long
Dim x       As Long

    Set wsAtiva = ThisWorkbook.ActiveSheet
    UltL = Application.WorksheetFunction.Max(10, wsAtiva.Cells(Rows.Count, 2).End(xlUp).Row)
   
    wsAtiva.Range(Cells(1, 1), Cells(1, 7)).Copy: wsAtiva.Cells(UltL + 1, 1).Insert Shift:=xlDown

    wsAtiva.Cells(UltL + 1, 2).Value = wsAtiva.Cells(UltL, 2).Value + 1
    wsAtiva.Cells(1, 2).Value = wsAtiva.Cells(UltL, 2).Value + 2
    
    x = 1
    
    For i = 11 To (UltL + 1)
        wsAtiva.Cells(i, 2).Value = x
        x = x + 1
    Next i
   
    Application.CutCopyMode = False
    Set wsAtiva = Nothing
   
End Sub

Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.

 
Postado : 30/03/2016 9:04 pm
(@edcronos2)
Posts: 346
Reputable Member
 

Desculpa intrometer na troca de ideia dos senhores ...
Mas acho que seria isso que esta querendo vonzuben

para mim tato faz ,
mas parece que ele quer o ajuste ao excluir linhas
eu pensei em varrer e reajustar os valores tbm , mas teria que ser na macro que exclui linha e não na que adiciona
mas como ele não postou a macro que exclui imaginei que a exclusão pode ser manual tbm ,

por isso optei por uma formula para deixar a anumeração automática
bem ele falou que era oq queria,

mas veio com isso de adicionar na parte de cima e não na ultima
levei um tempo para entender, mas acho que oq ele quer é que em vez da macro procurar a ultima linha para adicionar mais uma, ela adicione sempre a linha na 12 e a numeração de baixo acompanhe

mas bem, foi isso que entendi depois de ler varia vezes oq ele excreveu kkkk " é que minha mente é uma bagunça mesmo"

 
Postado : 31/03/2016 4:42 am
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Deu certo aqui, alterei algumas coisas

Sub InserirLinha()

Dim wsAtiva As Worksheet

    Set wsAtiva = ThisWorkbook.ActiveSheet
   
    wsAtiva.Range(Cells(1, 1), Cells(1, 6)).Copy: wsAtiva.Range(Cells(12, 1), Cells(12, 6)).Insert Shift:=xlDown

    wsAtiva.Cells(12, 2).FormulaLocal = "=indireto(" & """" & "B" & """" & "&lin() - 1 )+1"
   
    Application.CutCopyMode = False
    Set wsAtiva = Nothing
   
End Sub
 
Postado : 31/03/2016 8:58 am