none
Botão salvar não imposta os dados na planilha RRS feed

  • 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

     
    quarta-feira, 4 de maio de 2016 11:46

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
    quarta-feira, 4 de maio de 2016 15:22

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
    quarta-feira, 4 de maio de 2016 12:11
  • 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

    quarta-feira, 4 de maio de 2016 12:27
  • 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
    quarta-feira, 4 de maio de 2016 12:43
  • 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

    quarta-feira, 4 de maio de 2016 13:48
  • 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

    quarta-feira, 4 de maio de 2016 14:00
  • Estranho

    Tente hospedar essa planilha em algum disco virtual para que possamos verificar


    André Santo | basevba.wordpress.com

    quarta-feira, 4 de maio de 2016 14:28
  • André,

    enviei para o Email do Blog.

    quarta-feira, 4 de maio de 2016 14:59
  • 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
    quarta-feira, 4 de maio de 2016 15:22
  • KaKaKa, coisa de principiante.

    Valeu GIGANTE, muito obrigado.

    quarta-feira, 4 de maio de 2016 16:14
  • As ordens, volte sempre que precisar !

    André Santo | basevba.wordpress.com

    quinta-feira, 5 de maio de 2016 11:57