none
somando Textbox no vba RRS feed

  • Pergunta

  • Ola pessoal

    Sou novo no forum e iniciante em VBA

    gostaria de uma ajuda

    O que acontece é o seguinte:

    Criei um formulario para inserir dados em uma planilha

    nesse formulario dentro outros componentes existem 6 textbox

    no textbox1 é digitado um numero inteiro

    no textbox2, textbox3, textbox4 e textbox5 são digitados valores correspondende a gastos de 4 tipos

    no textbox6 é que ta o problema

    pois gostaria que o textbox6 somase os valores dos outros textbox e ele fosse mostrando a soma conforme eu fosse preenchendo os outros textbox.

    Deu pra entender?

    Se alguem puder me auxiliar

    Agradeço

    Fico no aguardo

     

     

    segunda-feira, 30 de janeiro de 2012 22:17

Respostas

  • RobatSilva,

    Não querendo roubar a sua resposta que está correta... rshenrique, eu fiz o codigo puro para vc ver o que o RobatSilva descreveu, com uma diferença: vc pediu que todas as vezes que mudar o valor, vc quer que atualize o ultimo quadro e é deste jeito:

     

    Private Sub TextBox1_Change()
    
    TextBox6.Value = Val(TextBox1.Value) + Val(TextBox2.Value) + Val(TextBox3.Value) + Val(TextBox4.Value) + Val(TextBox5.Value)
    
    End Sub
    Private Sub TextBox2_Change() TextBox6.Value = Val(TextBox1.Value) + Val(TextBox2.Value) + Val(TextBox3.Value) + Val(TextBox4.Value) + Val(TextBox5.Value) End Sub
    Private Sub TextBox3_Change() TextBox6.Value = Val(TextBox1.Value) + Val(TextBox2.Value) + Val(TextBox3.Value) + Val(TextBox4.Value) + Val(TextBox5.Value) End Sub
    Private Sub TextBox4_Change() TextBox6.Value = Val(TextBox1.Value) + Val(TextBox2.Value) + Val(TextBox3.Value) + Val(TextBox4.Value) + Val(TextBox5.Value) End Sub
    Private Sub TextBox5_Change() TextBox6.Value = Val(TextBox1.Value) + Val(TextBox2.Value) + Val(TextBox3.Value) + Val(TextBox4.Value) + Val(TextBox5.Value) End Sub


     

    • Sugerido como Resposta Fabio Rhein terça-feira, 31 de janeiro de 2012 16:53
    • Marcado como Resposta rshenrique quinta-feira, 2 de fevereiro de 2012 18:57
    terça-feira, 31 de janeiro de 2012 16:53

Todas as Respostas

  • coloque isso em algum evento dos textbox2, 3, 4 e 5 (ex: AfterUpdate)

     

    TextBox6.Value = Val(TextBox6.Value) + Val(TextBox2.Value) + Val(textbox3.value)

    'insira os demais textbox na linha cima.

     

     

     'para apagar o valor digitado e não somar denovo

    textbox2.value = ""

    textbox3.value = ""

    'insira a linha acima para os demais textbox.

     

     

    Não se esqueça de colocar esse código em todos os textbox onde vc insere o valor.

     

    • Sugerido como Resposta Jeef_VBBanned terça-feira, 31 de janeiro de 2012 13:53
    segunda-feira, 30 de janeiro de 2012 23:45
  • RobatSilva,

    Não querendo roubar a sua resposta que está correta... rshenrique, eu fiz o codigo puro para vc ver o que o RobatSilva descreveu, com uma diferença: vc pediu que todas as vezes que mudar o valor, vc quer que atualize o ultimo quadro e é deste jeito:

     

    Private Sub TextBox1_Change()
    
    TextBox6.Value = Val(TextBox1.Value) + Val(TextBox2.Value) + Val(TextBox3.Value) + Val(TextBox4.Value) + Val(TextBox5.Value)
    
    End Sub
    Private Sub TextBox2_Change() TextBox6.Value = Val(TextBox1.Value) + Val(TextBox2.Value) + Val(TextBox3.Value) + Val(TextBox4.Value) + Val(TextBox5.Value) End Sub
    Private Sub TextBox3_Change() TextBox6.Value = Val(TextBox1.Value) + Val(TextBox2.Value) + Val(TextBox3.Value) + Val(TextBox4.Value) + Val(TextBox5.Value) End Sub
    Private Sub TextBox4_Change() TextBox6.Value = Val(TextBox1.Value) + Val(TextBox2.Value) + Val(TextBox3.Value) + Val(TextBox4.Value) + Val(TextBox5.Value) End Sub
    Private Sub TextBox5_Change() TextBox6.Value = Val(TextBox1.Value) + Val(TextBox2.Value) + Val(TextBox3.Value) + Val(TextBox4.Value) + Val(TextBox5.Value) End Sub


     

    • Sugerido como Resposta Fabio Rhein terça-feira, 31 de janeiro de 2012 16:53
    • Marcado como Resposta rshenrique quinta-feira, 2 de fevereiro de 2012 18:57
    terça-feira, 31 de janeiro de 2012 16:53
  • Fabio, se colocar no evento change não vai ter problemas? Pois a cada caracter digitado ele já vai somando. Acho melhor colocar no evento AfterUpdate ou BeforUpdate. O que acha?
    terça-feira, 31 de janeiro de 2012 16:59
  • RobatSilva, 

    Tudo depende para o que ele usará... se ele quiser escrever e já mostrando, sem sair da box, ele já vai dando o valor... usar o afterupdate até pode estar certo mas ele terá que tirar o cursor da box. já o BeforeUpdate não tem como, pois ele teria que sair da box e entrar novamente.

    Outro que mostra bem isso é o Exit. que seria ao ele sair da box, o mesmo que faz o afterupdate que seria ao sair da box.

     

    Eu só quis mostrar uma outra forma, que esta correta e que no final, tudo depende do conceito que ele quer usar.

     

    Abs.

    terça-feira, 31 de janeiro de 2012 17:27
  • Caro RobatSilva e Fabio Rhein

    Em primeiro lugar quero agradecer o retorno de vocês

    e pedir desculpa pela minha demora em responder a vocês.

    Vendo a troca de ideia de vocês pude aprender um pouco mais de VBA.

    No meu formulário usei o código descrito pelo RobatSilva e funcionou perfeitamente.

    A unica alteração que fiz, foi referente a formatação, para que a textboxsoma, mostrasse a soma com duas casa depois da vírgula,

    conforme descrito abaixo :

    TextBox7.Value = Format((Val(TextBox2.Value) * Val(TextBox3.Value)) + Val(TextBox4.Value) + Val(TextBox5.Value) + Val_

    (TextBox6.Value), "#.#0")

    Fiquem a vontade para me corrigirem se eu estiver errado. Embora tenha dado certo no meu formulario.

    Muito obrigado pessoal

    Abraço

    quinta-feira, 2 de fevereiro de 2012 19:10