Usuário com melhor resposta
Erro em usar TextBox do Userform VBA do Excel para armazenar dados na planilha

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 SubPrivate Sub CommandButton1_Click()
TextBox3 = range("A1").Value + range("A2").Value
End Subdá 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 Sube calculo a soma executando a subrotina:
Private Sub CommandButton1_Click()
TextBox3 = range("A1").Value + range("A2").Value
End Subo 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.
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
-
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 SubPrivate Sub TextBox1_Change()
Range("a1").Value = TextBox1.Value
End SubPrivate Sub TextBox2_Change()
Range("a2").Value = TextBox2.Value
End SubPrivate Sub UserForm_Activate()
TextBox1.Value = Range("A1").Value
TextBox2.Value = Range("A2").Value
End SubQualquer coisa poste novamente!
BrazCruzeiro- Marcado como Resposta Daniel_2010 sábado, 7 de agosto de 2010 01:04
-
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
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 SubPrivate Sub TextBox1_Change()
Range("a1").Value = TextBox1.Value
End SubPrivate Sub TextBox2_Change()
Range("a2").Value = TextBox2.Value
End SubPrivate Sub UserForm_Activate()
TextBox1.Value = Range("A1").Value
TextBox2.Value = Range("A2").Value
End SubQualquer coisa poste novamente!
BrazCruzeiro- Marcado como Resposta Daniel_2010 sábado, 7 de agosto de 2010 01:04
-
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
-
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
-
Olá amigo, estou com outro problema. Quando eu executo a subrotina:
Sub Teste()
a = 0.31
Range("A1") = Str(a)
End SubO 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 Functione 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!!!