Notifications
Clear all

Somar Textbox com Percentual

6 Posts
2 Usuários
0 Reactions
1,129 Visualizações
(@kuika)
Posts: 3
New Member
Topic starter
 

Boa noite a todos!

Já era usuário do Planilhando porem esqueci meu acesso! hehehe

estou com uma duvida na minha planilha, pois o valor que esta somando não esta correto, ele não soma os campos depois da vírgula no formulário FrmBusca

No código tem dois tipos que tentei e nenhum dos dois consegui sucesso.

desculpe pelo código é que sou inexperiente com VBA.

 On Error Resume Next '

TextBox167 = Format((CDbl(TextBox41.Value) + CDbl(TextBox84.Value) + CDbl(texbox125.Value)) / 3)

E

 
 Dim num1 As Integer
 Dim num2 As Integer
 Dim num3 As Integer
num1 = Val(TextBox39.Text)
 num2 = Val(TextBox82.Text)
 num3 = Val(TextBox123.Text)
 TextBox165.Value = ((CDbl(num1) + CDbl(num2) + CDbl(num3)) / 3)

Em anexo a planilha onde esta o código bem grande pois são muitos textbox não vi outra maneira de fazer o comparativo.
se alguém conseguir me auxiliar neste caso serei muito grato.

 
Postado : 08/06/2015 3:55 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Como você mesmo disse é bem extenso o codigo, assim vai considerações:
Ao utilizar textboxs, deve-se ter em mente que por default o valor retornado/assumido e uma string(Texto).
Definindo uma variável como INTEGER, a mesma retornará apenas números inteiros, se tiver necessidade de decimais, utilize a variável como Double ou Currency.
A função de conversão Val reconhece decimais se separado por ponto do inteiro, havendo virgula, será descartado. Assim prefira/utilize a função Cdbl ou Cdec para conversão de valores com virgula.
O erro reportado, básicamente ocorre quando a função Cdec ou Cdbl recebe uma string que não consegue converter o valor, no seu caso as variaveis/textbox com percentual
Por exemplo: TextBox27.Text = Range("b33") & "%", no caso o conteudo será uma string/Texto "27%", assim Cdec ou Cdbl geram erro, por não reconhecer "27%" como um valor.
Uma possibilidade seria -:num1 = CDbl(Left(TextBox27.Text, Len(TextBox27.Text) - 1))

Faça essas alterações e verifique se avança

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/06/2015 9:04 am
(@kuika)
Posts: 3
New Member
Topic starter
 

Reinaldo para o percentual funcionou que é uma maravilha, Muito obrigado.
o codigo ficou assim:

Dim num1 As Double
 Dim num2 As Double
 Dim num3 As Double
 num1 = CDbl(Left(TextBox31.Text, Len(TextBox31.Text) - 1))
 num2 = CDbl(Left(TextBox74.Text, Len(TextBox74.Text) - 1))
 num3 = CDbl(Left(TextBox115.Text, Len(TextBox115.Text) - 1))
 TextBox157 = Format(((CDbl(num1) + CDbl(num2) + CDbl(num3)) / 3) / 100, "0.00%")

ai o que eu fiz padronizei como você falou para identificar os 0,00 usando o cdbl ficando o código desta forma para os itens que não tem %

 
Dim num1 As Double
 Dim num2 As Double
 Dim num3 As Doublenum1 = CDbl(Left(TextBox40.Text, Len(TextBox40.Text) - 1))
 num2 = CDbl(Left(TextBox83.Text, Len(TextBox83.Text) - 1))
 num3 = CDbl(Left(TextBox124.Text, Len(TextBox124.Text) - 1))
 TextBox166 = Format(((CDbl(num1) + CDbl(num2) + CDbl(num3)) / 3))

porem não esta calculando corretamente neste caso, sabe dizer o motivo?

Muito obrigado mesmo :D

 
Postado : 09/06/2015 11:11 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O ideal seria detalhar "porem não esta calculando corretamente neste caso".
Tentei acompanhar os resultados, mas você tem quase 170 textbox, então uma dica, é revisar todas as linhas que estão carregando os textbox, provavelmente está puxando valores incorretos.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/06/2015 7:14 pm
(@kuika)
Posts: 3
New Member
Topic starter
 

Bom dia galera!

o que esta acontecendo é que o resultado esta errado mas acho que é algo no código mas não estou conseguindo fazer de maneira alguma.

textbox40 = 1,1
textbox83 = 1,1
textbox124 = 1,1
resultado no textbox124 = 1,3
Resultado correto = 1,1 (é a Média)

  num1 = CDbl(Left(TextBox40.Text, Len(TextBox40.Text) - 1))
 num2 = CDbl(Left(TextBox83.Text, Len(TextBox83.Text) - 1))
 num3 = CDbl(Left(TextBox124.Text, Len(TextBox124.Text) - 1))
 TextBox166 = Format(((CDbl(num1) + CDbl(num2) + CDbl(num3)) / 3), "0.00")

gostaria que o resultado no textbox124 fosse = 1,1 com no máximo duas casas decimais.

:D

 
Postado : 10/06/2015 7:11 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Como a "conversão" dos valores já é feita em num1, num2 e num3, então em TextBox66 utilize :

TextBox166= Format((num1+num2+num3)/3,"0.00"), agora tenha certeza que os valores são realmente o que descreveu, se forem, não há razao para resultado errado

Sub tt()
num1 = CDbl("1,1")
num2 = CDbl("1,1")
num3 = CDbl("1,1")
meu = Format((num1 + num2 + num3) / 3, "0.00")
MsgBox meu
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/06/2015 10:44 am