Inserir linha com g...
 
Notifications
Clear all

Inserir linha com grade sem perder formula

9 Posts
2 Usuários
0 Reactions
2,112 Visualizações
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Saudaçoes,

Criei um formulario simples com quatro comandos que salvam os dados em uma tabela com linhas de grade, a primeira linha contem o cobeçalho, as proximas tres linhas receberao os dados do formulario e a ultima linha de grade, contem os valores totais.

Gostaria que preenchendo estas tres linhas ( citei tres como exemplo ) disponiveis, o codigo inserisse mais linhas, mantendo as linhas de grade, conforme os novos lançamentos forem acontecendo, mantendo sempre uma so linha em branco entre a ultima preenchida e a ultima onde contem os valores totais.

Obrigado

Fabio Pradella

 
Postado : 11/07/2012 2:33 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Cheguei a este codigo ai embaixo mas ele copia a segunda linha da planilha e nao a proxima em branco como eu gostaria, criando assim sempre mais uma linha em branco para receber futuros dados.

Private Sub btnOk_Click()

Dim valor As Variant
Dim lastrow As Long

'Seleciona a planilha
Sheets("Lançamentos").Activate
Range("A2").Select
lastrow = Cells(Rows.Count, 1).End(xlUp).Row

ActiveCell.Offset(lastrow - 1, 0).Value = TxtData.Text ' salva o valor do textboxdata na coluna 0
ActiveCell.Offset(lastrow - 1, 1).Value = TxtComanda.Text
ActiveCell.Offset(lastrow - 1, 2).Value = TxtDescriçao.Text
ActiveCell.Offset(lastrow - 1, 3).Value = TxtValor.Text

With ActiveCell.EntireRow
.Copy
.Insert Shift:=xlUp
End With
Application.CutCopyMode = False

Call LimpaControles

End Sub

 
Postado : 11/07/2012 3:43 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente assim:

Private Sub btnOk_Click()

Dim valor As Variant
Dim lastrow As Long

'Seleciona a planilha
Sheets("Lançamentos").Activate
Range("A2").Select
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
'Aqui  irá copiar a penultima linha e inseri-la, com todos seus features
Rows(lastrow - 1 & ":" & lastrow - 1).Select
Selection.Copy
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False

ActiveCell.Offset(lastrow - 1, 0).Value = TxtData.Text ' salva o valor do textboxdata na coluna 0
ActiveCell.Offset(lastrow - 1, 1).Value = TxtComanda.Text
ActiveCell.Offset(lastrow - 1, 2).Value = TxtDescriçao.Text
ActiveCell.Offset(lastrow - 1, 3).Value = TxtValor.Text


'With ActiveCell.EntireRow
'.Copy
'.Insert Shift:=xlUp
'End With
'Application.CutCopyMode = False


'Call LimpaControles


 
Postado : 12/07/2012 6:29 am
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Bom dia Reinaldo,

Ainda nao deu certo, estou postando o exemplo, obrigado.

 
Postado : 12/07/2012 7:16 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja no anexo

 
Postado : 12/07/2012 9:40 am
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Obrigado Reinaldo,

Ficou Show.

 
Postado : 12/07/2012 12:32 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Reinaldo,

Como sempre nao consigo ficar parado ai invento arte, ok, agora ele vai adicionando linhas conforme a necessidade, é possivel criar um codigo que no evento click de um comando apague tudo que foi adicionado nesta planilha e volte como era basicamente? para uma nova quinzena como é o meu caso, istoé a cada 15 dias eu salvaria esta planilha e limparia ela para começar tudo de novo.

Obrigado

 
Postado : 12/07/2012 1:35 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se entendi crie um btn e use

Private Sub BtnLimpaquinzena_Click()
Dim lastrow As Long
Sheets("Lançamentos").Activate
Range("A2").Select
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
Rows("2:" & lastrow).Select
Selection.Delete Shift:=xlUp
Range("A2").Select
End Sub
 
Postado : 12/07/2012 2:26 pm
(@fabioprade)
Posts: 273
Reputable Member
Topic starter
 

Mais do que perfeito, muito obrigado Reinaldo.

 
Postado : 12/07/2012 3:01 pm