Cadastro salvando na planilha errada através de formulário
Enviado: 16 Mar 2016 às 16:48
por kalebe
Senhores(as), boa tarde.
Estou fazendo um lançamento através do código abaixo em VBA através de um formulário, porém ao escolher que o código lançe na plan6 os dados ele esta lançando a informação em outra planilha. A planilha eu escolho onde no código abaixo esta em vermelho.
Tipo:
se eu colocar para lançar na planilha 6 ele lança na plan8
se eu colocar para lançar na planilha 7 ele lança na plan3
Private Sub CommandButton1_Click()
Dim ultimALINHA
ultimALINHA = Sheets(6).Range("A1000000").End(xlUp).Row
On Error Resume Next
Sheets(6).Select
Sheets(6).Range("A" & ultimALINHA + 1).Value = TextBox1.Value
TextBox1 = Empty
MsgBox "Pagamento Cadastrado!", vbInformation, "LANÇAMENTOS"
End Sub
Re: Cadastro salvando na planilha errada através de formulár
Enviado: 16 Mar 2016 às 19:07
por Evandron
Boa noite Kaleb,
Isso acontece devido o VBA entende esse número como um índice, ou seja, essa numeração representa a ordem das planilha, como por exemplo:
Partindo do pressuposto que temos 4 planilhas na pasta de trabalho, sendo na seguinte ordem:
Plan1, Plan4, Plan3, Plan5
Se queremos fazer a referencia na plan4, utilizando o índice ficaria: Sheets(2). O 2 é porque a Plan4 é a segunda planilha pela ordem.
Essa forma de fazer referência eu particularmente não recomendo, pois, se por ventura você troca a posição da planilha, terá que lembrar de alterar no código.
Eu recomendo utilizar pelo nome raiz, este é encontrado na Estrutura do VBA Projetcs, conforme exemplo:
VBA Projects (Pasta 1)
Microsoft Excel Objetos
Plan1 (Plan3)
Plan2 (Plan4)
Plan3 (Plan2)
Plan4 Plan1)
Na hierarquia do VBA projeto é distribuída, conforme exemplo acima. Então, se precisamos fazer referência a planilha com o nome Plan4, podemos notar que o nome "Raiz" que o VBA entenderá será Plan2, ou seja, o nome que está entre parêntese é o da planilha e, o que está fora é o nome raiz.
Diante disso, fazendo a adaptação em seu exemplo, ficaria:
Imaginado que a estrutura do projeto seja:
Plan1 (Plan6)
Plan2 (Plan5)
Plan3 (Plan4)
Então, a adaptação do código ficaria assim:
Private Sub CommandButton1_Click()
Dim ultimALINHA
'O comando abaixo já pega a próxima linha que irá receber o lançamento e armazena na variável
ultimALINHA = Plan1.Range("A" & Rows.Count).End(XlUp).Office(1,0).Row
On Error Resume Next
Plan1.Select
'O Comando Cells tem como parâmetros número da linha e numero de coluna. Desta forma, o campo abaixo fará o seguinte: Lança a informação na próxima linha fazia e na coluna 1, que seria a coluna A.
Plan1.Cells(ultimALINHA,1) = TextBox1.Value
TextBox1 = Empty
MsgBox "Pagamento Cadastrado!", vbInformation, "LANÇAMENTOS"
End Sub
É basicamente isso. Espero ter ajudado!
Fiz um arquivo de exemplo (anexo no tópico), com o código vba comentado. Caso tenha dúvidas entre em contato.
Atenciosamente,
Evandro Nogueira
Re: Cadastro salvando na planilha errada através de formulár
Enviado: 17 Mar 2016 às 08:40
por kalebe
Evandron, obrigado por ajudar. Ao aplicar o código que você enviou o sistema apresentou a seguinte mensagem:
ERRO 438 (O OBJETO NÃO ACEITA ESTA PROPRIEDADE OU METODO) na linha abaixo
ultimALINHA = Plan1.Range("A" & Rows.Count).End(xlUp).Office(1, 0).Row
Re: Cadastro salvando na planilha errada através de formulár
Enviado: 17 Mar 2016 às 08:48
por Reinaldo
Altere:
ultimALINHA = Plan1.Range("A" & Rows.Count).End(xlUp).Office(1, 0).Row
Para:
ultimALINHA = Plan1.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Row
Re: Cadastro salvando na planilha errada através de formulár
Enviado: 17 Mar 2016 às 10:21
por kalebe
Reinaldo, perfeito. Esta resolvido. Muito obrigado pela ajuda.
Obrigado a todas as pessoas envolvidas na solução dessa pergunta. OBRIGADO.