none
Erro em usar TextBox do Userform VBA do Excel para armazenar dados na planilha RRS feed

  • Pergunta

  • Estou tentando criar um programa em VBA do Excel. Os valores para as variáveis serão inseridos através de caixas de texto em useform e armazenados na planilha. Quando eu armazeno, por exemplo, o valor 12,5 na célula A1 e 13,5 na célula A2 e calculo a soma através das subrotinas:

    Private Sub TextBox1_Change()
    range("A1") = TextBox1.Value
    End Sub

    Private Sub TextBox2_Change()
    range("A2") = TextBox2.Value
    End Sub

    Private Sub CommandButton1_Click()
    TextBox3 = range("A1").Value + range("A2").Value
    End Sub

    dá tudo certo (resultado = 26). Porém quando inicio o userform novamente executando a subrotina:

    Sub userform_initialize()
    TextBox1 = range("A1").Value
    TextBox2 = range("A2").Value
    End Sub

    e calculo a soma executando a subrotina:

    Private Sub CommandButton1_Click()
    TextBox3 = range("A1").Value + range("A2").Value
    End Sub

    o resultado dá 12,513,5. Ou seja, está somando os caracteres e na planilha os valores da célula A1 e A2 agora estão em formatos de textos.Tentei resolver trocando ponto por vírgula e vice-versa, várias outras formas e nada resolveu. Alguém sabe como eu posso resolver isto? Desde já muito grato.

     

    sexta-feira, 6 de agosto de 2010 01:58

Respostas

  • Olá amigo Daniel:

     

    Que bom que vc conseguiu solucionar ai seu problema. O que acho estranho é que não consegui reproduzir esse problema, aqui funcionou normalmente. As vezes me depara com a situação inversa. Ex: quero somar um valor em uma célula com um valor da textbox, quando pressiono o botão SOMAR da userform dá um erro. Isso acontece porque a sub está interpretando o valor digitado dentro da textbox como texto. Daí eu faço o seguinte, Cdbl(textbox1), o Cdbl transforma o texto em número e a soma é realizada.

     

    Até mais!!!


    BrazCruzeiro
    • Marcado como Resposta Daniel_2010 domingo, 8 de agosto de 2010 14:05
    sábado, 7 de agosto de 2010 10:04
  • Caro amigo Daniel

    Fiz os testes aqui usando sua sub e não deu nenhum erro.

     

    Veja se dessa forma resolve seu problema:

    Private Sub CommandButton1_Click()
    TextBox3.Value = Range("A1").Value + Range("A2").Value
    End Sub

    Private Sub TextBox1_Change()
    Range("a1").Value = TextBox1.Value
    End Sub

    Private Sub TextBox2_Change()
    Range("a2").Value = TextBox2.Value
    End Sub

    Private Sub UserForm_Activate()
    TextBox1.Value = Range("A1").Value
    TextBox2.Value = Range("A2").Value
    End Sub

    Qualquer coisa poste novamente!


    BrazCruzeiro
    • Marcado como Resposta Daniel_2010 sábado, 7 de agosto de 2010 01:04
    sexta-feira, 6 de agosto de 2010 23:23
  • Valeu amigo pela dica, mas não resolveu o problema aqui. Pesquisando descobri uma solução, é utilizando a função Val(). Esta funçao transforma o valor de uma String para um valor real. Assim as subrotinas acima poderia ficar assim:

    Private Sub TextBox1_Change()
    range("A1") = TextBox1
    End Sub

    Private Sub TextBox2_Change()
    range("A2") = TextBox2
    End Sub

    Private Sub CommandButton1_Click()
    TextBox3 = Val(range("a1")) + Val(range("a2"))
    End Sub

    Sub userform_initialize()
    TextBox1 = range("A1")
    TextBox2 = range("A2")
    End Sub

     

     

    • Marcado como Resposta Daniel_2010 sábado, 7 de agosto de 2010 01:04
    sábado, 7 de agosto de 2010 01:03

Todas as Respostas

  • Caro amigo Daniel

    Fiz os testes aqui usando sua sub e não deu nenhum erro.

     

    Veja se dessa forma resolve seu problema:

    Private Sub CommandButton1_Click()
    TextBox3.Value = Range("A1").Value + Range("A2").Value
    End Sub

    Private Sub TextBox1_Change()
    Range("a1").Value = TextBox1.Value
    End Sub

    Private Sub TextBox2_Change()
    Range("a2").Value = TextBox2.Value
    End Sub

    Private Sub UserForm_Activate()
    TextBox1.Value = Range("A1").Value
    TextBox2.Value = Range("A2").Value
    End Sub

    Qualquer coisa poste novamente!


    BrazCruzeiro
    • Marcado como Resposta Daniel_2010 sábado, 7 de agosto de 2010 01:04
    sexta-feira, 6 de agosto de 2010 23:23
  • Valeu amigo pela dica, mas não resolveu o problema aqui. Pesquisando descobri uma solução, é utilizando a função Val(). Esta funçao transforma o valor de uma String para um valor real. Assim as subrotinas acima poderia ficar assim:

    Private Sub TextBox1_Change()
    range("A1") = TextBox1
    End Sub

    Private Sub TextBox2_Change()
    range("A2") = TextBox2
    End Sub

    Private Sub CommandButton1_Click()
    TextBox3 = Val(range("a1")) + Val(range("a2"))
    End Sub

    Sub userform_initialize()
    TextBox1 = range("A1")
    TextBox2 = range("A2")
    End Sub

     

     

    • Marcado como Resposta Daniel_2010 sábado, 7 de agosto de 2010 01:04
    sábado, 7 de agosto de 2010 01:03
  • Olá amigo Daniel:

     

    Que bom que vc conseguiu solucionar ai seu problema. O que acho estranho é que não consegui reproduzir esse problema, aqui funcionou normalmente. As vezes me depara com a situação inversa. Ex: quero somar um valor em uma célula com um valor da textbox, quando pressiono o botão SOMAR da userform dá um erro. Isso acontece porque a sub está interpretando o valor digitado dentro da textbox como texto. Daí eu faço o seguinte, Cdbl(textbox1), o Cdbl transforma o texto em número e a soma é realizada.

     

    Até mais!!!


    BrazCruzeiro
    • Marcado como Resposta Daniel_2010 domingo, 8 de agosto de 2010 14:05
    sábado, 7 de agosto de 2010 10:04
  • Olá amigo, estou com outro problema. Quando eu executo a subrotina:

    Sub Teste()
    a = 0.31
    Range("A1") = Str(a)
    End Sub

    O valor da célula A1 não fica como uma String. Já quando eu crio a função:

    Function Teste2()
    a = 0.31
    Teste2 = Str(a)
    End Function

    e coloco ela na planilha o resultado tem uma String.

    Eu queria que na subrotina tb convertesse em uma string. Sabes como faço isso?

     

    Até mais!!!

    domingo, 8 de agosto de 2010 14:05