Usuário com melhor resposta
Como fazer divisão entre os valores de 2 TextBox e mostrar em outra textBox sem usar botão

Pergunta
-
Boa noite pessoal
Não sou novo no excel VBA, mas como as vezes fico muito tempo sem praticar acabo apanhando para resolver uma questões
que parecem simples de resolver
Hoje quebrei a cabeça para resolver essa questão que parecia simples, cheguei a pesquisar na internet, mas nenhum dos exemplos encontrado deu certo, sempre aparecia um erro diferente. Entre os erros estão: Estouro, Variaveis incompativeis, Divisão por zero. e por ai vai
Vamos ao que interessa
tenho 3 textbox: tboxVol_garrafa, tboxVol_basc, tboxQuant_basc
Preciso que ao digitar ou modificar os valores de tboxVol_garraf ou tboxVol_basc
o tboxQuant_basc faça o seguinte calculo instantaneamente: tboxVol_garraf / tboxVol_Basc e mostre o valor
Tentei fazer isso no evento change dos tboxVol_garraf e tboxVol_basc e ja deu erro de "estouro"
e quando eu apago os dados da tboxVol_garraf ou tboxVol_Basc da erro tambem, porque as tbox não podem ficar vazias.
Tem a questão da separador decimal tambem, que na tboxVol_basc tenho que digitar um valor 6,3 e para calculo o 3 depois da virgula não é calculado.
Isso tem solução?
Aguardo o apoio de vcs
Abraço
Respostas
-
É facil.
Para as contas saírem corretas deves digitar os valores com vírgula e não com ponto se se tratar de valores decimais.
Deste o exemplo de digitar o valor de "6.3", mas e se for "6.9", só a parte inteira interessa?
Faz um Userform, coloca 3 Textbox e um botão para exucutar.
Cola o código que segue.
Private Sub CommandButton1_Click() If TextBox1.Value <> "" and TextBox2.Value <> "" Then If TextBox1.Value > 0 And TextBox2.Value > 0 Then TextBox3.Value = Fix(TextBox1.Value) / Fix(TextBox2.Value) Else Cancel = True End If Else Cancel = True End If End Sub
A expressão FIX, trata sempre e apenas a parte inteira.
Se no caso de 6.9 quereres arredondar para 7, utiliza termo INT (de inteiro).
O exemplo utiliza botão para experiência, mas podes adaptar a rotina para o evento exit da Textbox2 por exemplo, que não carece de botão.
É só pensares como pretendes fazê-lo.
M_A_S_L
- Sugerido como Resposta Lucio Rogerio SPBanned terça-feira, 10 de abril de 2018 09:41
- Editado M_A_S_L terça-feira, 10 de abril de 2018 23:36
- Marcado como Resposta rshenrique domingo, 15 de abril de 2018 13:13
Todas as Respostas
-
É facil.
Para as contas saírem corretas deves digitar os valores com vírgula e não com ponto se se tratar de valores decimais.
Deste o exemplo de digitar o valor de "6.3", mas e se for "6.9", só a parte inteira interessa?
Faz um Userform, coloca 3 Textbox e um botão para exucutar.
Cola o código que segue.
Private Sub CommandButton1_Click() If TextBox1.Value <> "" and TextBox2.Value <> "" Then If TextBox1.Value > 0 And TextBox2.Value > 0 Then TextBox3.Value = Fix(TextBox1.Value) / Fix(TextBox2.Value) Else Cancel = True End If Else Cancel = True End If End Sub
A expressão FIX, trata sempre e apenas a parte inteira.
Se no caso de 6.9 quereres arredondar para 7, utiliza termo INT (de inteiro).
O exemplo utiliza botão para experiência, mas podes adaptar a rotina para o evento exit da Textbox2 por exemplo, que não carece de botão.
É só pensares como pretendes fazê-lo.
M_A_S_L
- Sugerido como Resposta Lucio Rogerio SPBanned terça-feira, 10 de abril de 2018 09:41
- Editado M_A_S_L terça-feira, 10 de abril de 2018 23:36
- Marcado como Resposta rshenrique domingo, 15 de abril de 2018 13:13
-
Amigo
Desculpa a demora em dar retorno.
No Final Verifiquei aqui e era exatamente isso que precisava.
No meu caso era necessário eu inseriri um ComandButton. E foi o que fiz
Apenas Retirei o "Fix" e deu certinho.
Muito Obrigado
P.S Vou abrir outro topico. Da uma olhada por favor, ve se consegue me ajudar.
-