Usuário com melhor resposta
Insertar dados numa nova linha

Pergunta
-
Olá
tenho um trabalho para fazer para a universidade em excel, e não sou muito entendida no assunto. Tenho aqui uma dúvida.
Eu quero inserir novos dados numa tabela já construída. O problema é que só consigo inserir na primeira linha, quando tento inserir novamente, escreve por cima.
Deixo aqui o que fui montando, podem me dizer onde está o erro:
Private Sub Label7_Click()
Dim ultimalinha As Object
Set ultimalinha = ActiveSheet.Range("A55").End(xlUp)
ultimalinha.Offset(32, 1).Value = TextBox1.Text
ultimalinha.Offset(32, 2).Value = TextBox2.Text
ultimalinha.Offset(32, 3).Value = TextBox3.Text
ultimalinha.Offset(32, 4).Value = TextBox4.Text
ultimalinha.Offset(32, 5).Value = TextBox5.Text
ultimalinha.Offset(32, 6).Value = TextBox6.Text
MsgBox "Registo inserido", 6, "Inserir"
End
End SubBasicamente o que acontece, é que os novos dadas só são inseridos na linha 33, mas eu queria que fosse sempre preenchendo (33,34,...)
Alguém têm alguma sugestão?
Respostas
-
Tente trocar
Set ultimalinha = ActiveSheet.Range("A55").End(xlUp)
por
Set ultimalinha = ActiveSheet.Range("A65536").End(xlUp).Offset(1)
e troque as linhas
ultimalinha.Offset(32, 1).Value = TextBox1.Text
ultimalinha.Offset(32, 2).Value = TextBox1.Text
...
por
ultimalinha.Offset(, 1).Value = TextBox1.Text
ultimalinha.Offset(, 2).Value = TextBox2.Text
...
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 7 de junho de 2014 21:27
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 7 de junho de 2014 21:27
Todas as Respostas
-
Vou trocar por miúdos o que o teu procedimento está a fazer:
1 - Procura a ultima celula preenchida da coluna A, que fique na linha 55 ou acima.
2 - Insere dados 32 linhas abaixo desta referência, nas celulas das colunas A, B, C, D, E, F
3 - Mosta uma mensagem.
4- Termina a execução!!?? O End apaga o contéudo de todas as variaveis do modulo.
-
Tente trocar
Set ultimalinha = ActiveSheet.Range("A55").End(xlUp)
por
Set ultimalinha = ActiveSheet.Range("A65536").End(xlUp).Offset(1)
e troque as linhas
ultimalinha.Offset(32, 1).Value = TextBox1.Text
ultimalinha.Offset(32, 2).Value = TextBox1.Text
...
por
ultimalinha.Offset(, 1).Value = TextBox1.Text
ultimalinha.Offset(, 2).Value = TextBox2.Text
...
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 7 de junho de 2014 21:27
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 7 de junho de 2014 21:27