Notifications
Clear all

TextBox "entender" fórmulas

3 Posts
2 Usuários
0 Reactions
1,166 Visualizações
(@bilokas)
Posts: 168
Reputable Member
Topic starter
 

Bom dia amigos do fórum,

Estou tentando criar uma forma de o usuário através de uma TextBox1, inserir uma função (fórmula) de soma de valores (formato moeda) Para que o resultado seja exibido numa TextBox2.

O usuário no caso iria inserir os dados (valores) usando vírgula como separador de casa decimal, ou seja, o usuário quer somar R$ 1,50 + R$ 1,75. Então ele digitaria "=1,50+1,50" no TextBox1 e o resultado seria exibido no TextBox2 como moeda (Currency)

Porém, quando uso "," (vírgula) ele da erro em tempo de execução 1004. Agora se eu trocar para "." (ponto) funciona.

Agora, se você pegar uma planilha normal e somar valores com "," (vírgula), ele aceita normalmente. Eu acho que o problema está no tipo de formatação que a célula está. Como padrão o excel vem como Geral, já mudei para moeda, texto, número e nada.

A rotina que eu estou tentando usar é esta:

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    Sheets("Plan1").Range("A1").Value = TextBox1.Value
    TextBox2.Value = Format(Sheets("Plan1").Range("A1").Value, "Currency")
End Sub
 
Postado : 23/09/2014 7:50 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não tenho certeza, aqui não tenho como alterar a configuração do PC, mas deve ser devido a configuração do padrão do sistem monetário do windows, veja que o teclado numerico, se digitar "." não da certo, é ao contrario.

Uma forma para contornar sem alterar a configuração seria:

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    
    sTT = Replace(TextBox1.Value, ",", ".")
    
    Sheets("Plan1").Range("A1").Value = sTT

    TextBox2.Value = Format(Sheets("Plan1").Range("A1").Value, "Currency")
    
End Sub

Faça os testes e veja se é isto.
[]s

 
Postado : 23/09/2014 8:47 am
(@bilokas)
Posts: 168
Reputable Member
Topic starter
 

Engraçado, ei fiquei imaginando algo com a instrução "replace" mas não pensei que fosse dar certo e não é que funcionou. Para nós brasileiros, tudo tem um "jeitinho" não é?! Rs.

Obrigado pela ajuda.

 
Postado : 23/09/2014 9:07 am