Notifications
Clear all

Inserir Linhas Copiadas com VBA

8 Posts
2 Usuários
0 Reactions
1,827 Visualizações
(@hellhammer1000)
Posts: 5
Active Member
Topic starter
 

Olá tudo bem?

Criei um botao para inserir uma quantidade de linhas desejadas.

Achei os códigos na net e aperentemente deu certo.

O que eu não consigo fazer, é que esta inserção de linhas seja igual a linha de cima, por exemplo, eu gostaria que as linhas fossem iguais a linha de referencia acima, e que inclusive fossem copiadas as formatações, fórmulas e etc.

Grato,

Hellhammer

 
Postado : 28/09/2012 11:11 am
(@hellhammer1000)
Posts: 5
Active Member
Topic starter
 

Segue o códido que estou usando:

Sub InserirLinhasCopiadas()
'
' Inserir Linhas Copiadas
'
Dim Rng As Range, Num As String, ans As Integer

On Error Resume Next
Set Rng = Application.InputBox(prompt:="Selecione a Linha Início ", Title:="Inserir Linhas", Type:=8)

    Num = Application.InputBox(prompt:="Inserir número de linhas", Title:="Inserir Linhas", Type:=1)
    
        If Num = False Then Exit Sub
        ans = MsgBox("Click Sim para ""Inserir"",  Não para ""Cancelar""", vbYesNo + vbInformation)
    
        If ans = vbYes Then
    Rng.Resize(Num).EntireRow.Insert
    
        ElseIf ans = vbNo Then
            Rng.Resize(Num).EntireRow.Delete
        End If
End Sub
 
Postado : 28/09/2012 11:11 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Tente assim...

Sub InserirLInhasCopiadas_AleVBA()

Dim Rng As Range, Num As String, ans As Integer

On Error Resume Next
Set Rng = Application.InputBox(prompt:="Selecione a Linha Início ", Title:="Inserir Linhas", Type:=8)

Num = Application.InputBox(prompt:="Inserir número de linhas", Title:="Inserir Linhas", Type:=1)

If Num = False Then Exit Sub
ans = MsgBox("Click Sim para ""Inserir"", Não para ""Cancelar""", vbYesNo + vbInformation)

If ans = vbYes Then
    Rng.Resize(Num).EntireRow.Copy
    Rng.Resize(Num).EntireRow.Insert
ElseIf ans = vbNo Then
    Rng.Resize(Num).EntireRow.Delete
End If
End Sub
 
Postado : 29/09/2012 7:37 am
(@hellhammer1000)
Posts: 5
Active Member
Topic starter
 

Olá Alexandre tudo bem?

Obrigado pela sua resposta.

Tentei o código mas infelizmente não funcionou :|

De qualquer forma estou tentando em paralelo aqui também, e não sei se vc pode me ajudar com outra dúvida.

Sabe dizer uma formula para que por exemplo, quando eu adicionar 10 linhas ou 100 linhas a formula soma englobe todas as linhas?

Independente do número de linhas que eu adicionar na planilha a formula tem que envolver as celulas adicionadas.

Grato e grande abraço!

 
Postado : 30/09/2012 6:59 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Para uma soma "dinamica" experimente (supondo que seja soma na coluna de : =SOMA(INDIRETO("D1:D"&LIN()-1))

Veja se assim consegue colocar as configurações

Sub InserirLinhasCopiadas()
    '
    ' Inserir Linhas Copiadas
    '
Dim Rng As Range, Num As String, ans As Integer, Mn As Integer

    On Error Resume Next
    Set Rng = Application.InputBox(prompt:="Selecione a Linha Início ", Title:="Inserir Linhas", Type:=8)
    'numero da linha de inicio
    Mn = Rng.Row
        Num = Application.InputBox(prompt:="Inserir número de linhas", Title:="Inserir Linhas", Type:=1)
       
            If Num = False Then Exit Sub
            ans = MsgBox("Click Sim para ""Inserir"",  Não para ""Cancelar""", vbYesNo + vbInformation)
       
            If ans = vbYes Then
        Rng.Resize(Num).EntireRow.Insert
    
    Rows(Mn & ":" & Mn).Select
    Selection.Copy
    Rows(Mn & ":" & Mn + Num).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
       
            ElseIf ans = vbNo Then
                Rng.Resize(Num).EntireRow.Delete
            End If
    End Sub
 
Postado : 01/10/2012 6:12 am
(@hellhammer1000)
Posts: 5
Active Member
Topic starter
 

Olá Reinaldo tudo bem?

Muito obrigado pela ajuda mas infelizmente não funcionou.

Enquanto a soma dinamica, também não funcionou, por exemplo, eu coloco a formula na celula J1 e na formula coloco para começar a somar a partir da I10, e somente soma a celula I10 e não as outras. Eu vou preenchendo a I11, I12 e assim por diante mas ele pega somente a I10

Saberia dizer o que pode estar acontecendo?

abs

 
Postado : 01/10/2012 7:18 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom, por enquanto, estamos no nivel teorico, e teoricamente deveria funcionar. Talvez se postar um exemplo pratico, com a descrição dos passos que faz/deseja fique mais facil obter o que quer.
Nos testes que fiz (mas não sei se é o que faz/quer, funciona. No anexo, inicio a macro, seleciono a celula A61, incido 3 linha adicional, e as mesmas sáo inseridas com as formatações da linha 60.
A Formula tb evolui vj na coluna K.
Não é assim?

 
Postado : 01/10/2012 9:02 am
(@hellhammer1000)
Posts: 5
Active Member
Topic starter
 

Muito obrigado pela ajuda! :) abs

 
Postado : 05/10/2012 2:06 pm