Usuário com melhor resposta
Botão salvar não imposta os dados na planilha

Pergunta
-
Olá,
no código abaixo retorna com a mensagem, mas não imposta os dados na planilha AGENDA, alguém recomenda algo?
Private Sub CommandButton_Salvar_Agenda_Click() registros = Worksheets("AGENDA").UsedRange.Rows.Count + 1 With Worksheets("AGENDA") .Cells(registros, 1) = ComboBox_Dia .Cells(registros, 2) = ComboBox_Mes .Cells(registros, 3) = ComboBox_Ano .Cells(registros, 4) = ComboBox_Hora .Cells(registros, 5) = ComboBox_Minuto .Cells(registros, 6) = ListBox_Categoria .Cells(registros, 7) = ListBox_SubCategoria .Cells(registros, 8) = ListBox1_Animal .Cells(registros, 9) = ListBox2 .Cells(registros, 10) = ListBox3 .Cells(registros, 11) = TextBox1_Descricao .Cells(registros, 12) = ComboBox_Execucao.Value .Range(Columns(2), Columns(12)).AutoFit End With MsgBox "Gravado com sucesso" CommandButton_Limpar_Agenda_Click End Sub
Respostas
-
Caro Wilson,
Se você observar sua planilha mais embaixo, verá que existem dados a partir da célula 99.
Sendo assim, a variável registro está assumindo o valor 135 (primeira célula vazia) e inserindo os dados lá.
Limpe toda a planilha que deverá funcionar.
André Santo | basevba.wordpress.com
- Sugerido como Resposta André Santo quarta-feira, 4 de maio de 2016 15:22
- Marcado como Resposta Wilson Boris quarta-feira, 4 de maio de 2016 16:14
Todas as Respostas
-
Olá,
no código abaixo retorna com a mensagem, mas não imposta os dados na planilha AGENDA, alguém recomenda algo?
Private Sub CommandButton_Salvar_Agenda_Click() registros = Worksheets("AGENDA").UsedRange.Rows.Count + 1 With Worksheets("AGENDA") .Cells(registros, 1) = ComboBox_Dia .Cells(registros, 2) = ComboBox_Mes .Cells(registros, 3) = ComboBox_Ano .Cells(registros, 4) = ComboBox_Hora .Cells(registros, 5) = ComboBox_Minuto .Cells(registros, 6) = ListBox_Categoria .Cells(registros, 7) = ListBox_SubCategoria .Cells(registros, 8) = ListBox1_Animal .Cells(registros, 9) = ListBox2 .Cells(registros, 10) = ListBox3 .Cells(registros, 11) = TextBox1_Descricao .Cells(registros, 12) = ComboBox_Execucao.Value .Range(Columns(2), Columns(12)).AutoFit End With MsgBox "Gravado com sucesso" CommandButton_Limpar_Agenda_Click End Sub
Fazendo um BreakPoint no End With todos os campos aparecem com dados, porém não são remetidos para planilha.
Será que tem algo relacionado ao procedimento abaixo:
Esta aplicação eu criei com o Salvar como do Excel, ou seja, eu tenho uma outra aplicação que salva normalmente com este código. Eu mudei os campos no Gerenciador de nomes e no Formulário o nome dos campos para serem cadastrados.
- Editado Wilson Boris quarta-feira, 4 de maio de 2016 12:26 Complemento
-
Bom dia Wilson,
Insira o breakpoint no mesmo local (End With), feito isso, execute o código e quando parar aperte CTRL + G, será aberta a janela de verificação imediata.
Nesta janela você digita
debug.print Worksheets("Agenda").cells(registros, 1)
E nos diga o que é retornado
dê também um debug.print na variável registros e em ListBox2.
Será exibido o conteúdo destas variáveis e podemos analisar melhor.
Adicionalmente sugiro que você use a propriedade .value no objeto cells e nos controles
André Santo | basevba.wordpress.com
-
Obrigado pelo retorno André,
vamos lá, fazendo o Break e digitando o código "debug.print Worksheets("Agenda").cells(registros, 1)," quando para:
retorna a mensagem "Gavado com sucesso", mas não imposta na planilha.
FAzendo o debug.print ao passar o mouse todos os valores aparecem normalmente.
Quanto ao value, poderia dar um exemplo?
Na forma abaixo sem sucesso:
Private Sub CommandButton_Salvar_Agenda_Click() registros = Worksheets("AGENDA").UsedRange.Rows.Count + 1 With Worksheets("AGENDA") Plan2.Cells(registros, 1) = ComboBox_Dia.Value Plan2.Cells(registros, 2) = ComboBox_Mes.Value Plan2.Cells(registros, 3) = ComboBox_Ano.Value Plan2.Cells(registros, 4) = ComboBox_Hora.Value Plan2.Cells(registros, 5) = ComboBox_Minuto.Value Plan2.Cells(registros, 6) = ListBox_Categoria.Value Plan2.Cells(registros, 7) = ListBox_SubCategoria.Value Plan2.Cells(registros, 8) = ListBox1_Animal.Value Plan2.Cells(registros, 9) = ListBox2.Value Plan2.Cells(registros, 10) = ListBox3.Value Plan2.Cells(registros, 11) = TextBox1_Descricao.Value Plan2.Cells(registros, 12) = ComboBox_Execucao.Value End With MsgBox "Gravado com sucesso" CommandButton_Limpar_Agenda_Click End Sub
- Editado Wilson Boris quarta-feira, 4 de maio de 2016 13:42 correção
-
Ok
1)
Vi que você mudou de Worksheets("AGENDA") para Plan2.
Está correto, Plan2 é a mesma que Agenda mesmo ?
2)
Coloque o .value na também célula que vai receber a informação
Plan2.cells(registros, 12).value
3) Não é o método que você chama após a msgbox que está limpando a informação ?
André Santo | basevba.wordpress.com
-
André,
Correto: a Plan2 é a mesma, mas retirei também, sem sucesso.
Com o códico abaixo sem o método e sem a msg, mas sem sucesso:
Private Sub CommandButton_Salvar_Agenda_Click() registros = Worksheets("AGENDA").UsedRange.Rows.Count + 1 With Worksheets("AGENDA") .Cells(registros, 1).Value = ComboBox_Dia.Value .Cells(registros, 2).Value = ComboBox_Mes.Value .Cells(registros, 3).Value = ComboBox_Ano.Value .Cells(registros, 4).Value = ComboBox_Hora.Value .Cells(registros, 5).Value = ComboBox_Minuto.Value .Cells(registros, 6).Value = ListBox_Categoria.Value .Cells(registros, 7).Value = ListBox_SubCategoria.Value .Cells(registros, 8).Value = ListBox1_Animal.Value .Cells(registros, 9).Value = ListBox2.Value .Cells(registros, 10).Value = ListBox3.Value .Cells(registros, 11).Value = TextBox1_Descricao.Value .Cells(registros, 12).Value = ComboBox_Execucao.Value End With End Sub
-
-
-
Caro Wilson,
Se você observar sua planilha mais embaixo, verá que existem dados a partir da célula 99.
Sendo assim, a variável registro está assumindo o valor 135 (primeira célula vazia) e inserindo os dados lá.
Limpe toda a planilha que deverá funcionar.
André Santo | basevba.wordpress.com
- Sugerido como Resposta André Santo quarta-feira, 4 de maio de 2016 15:22
- Marcado como Resposta Wilson Boris quarta-feira, 4 de maio de 2016 16:14
-
-