formatação textbox ...
 
Notifications
Clear all

formatação textbox porcentagem

13 Posts
2 Usuários
0 Reactions
6,044 Visualizações
(@afbergman)
Posts: 108
Estimable Member
Topic starter
 

Pessoal, tenho o seguinte codigo:

Private Sub calcular_btn_Click()

loadfactor = CDbl(loadfirst_txt.Value) + CDbl(loadexec_txt.Value) + CDbl(loadpremium_txt.Value) + CDbl(loadeconomy_txt.Value)
seatconfiguration = CDbl(seatfirst_txt.Value) + CDbl(seatexec_txt.Value) + CDbl(seatpremium_txt.Value) + CDbl(seateconomy_txt.Value)

 loadfactor_txt = (loadfactor / seatconfiguration * 100) & "%"
 
  
End Sub

Quando clico nesse botao, o calculo é feito, porem, o valor que aparece na textbox fica 100,014424%. Como faço para formatar e aparecer apenas 100,01%?

Obrigado.

 
Postado : 07/09/2015 12:31 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente:
loadFactor_txt = Format((loadFactor / seatConfiguration * 100), "0.00%")

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

 
Postado : 08/09/2015 7:42 am
(@afbergman)
Posts: 108
Estimable Member
Topic starter
 

Pessoal,

Gostaria de formatar a textbox para aparecer os valores de porcentagem até duas casas decimais, exemplo: 100,01%

Não estou conseguindo fazer isso, pois precisava que caso a porcentagem fosse acima de 100,00% aparecesse uma msgbox.

Vejam o meu codigo e digam o que esta errado.

Private Sub loadfactor_txt_Change()

Me.loadfactor_txt.Value = Format(Val(loadfactor_txt.Value) / 100, "##,00%")
loadfactor_txt.SelStart = Len(loadfactor_txt.Value) - 1

If loadfactor_txt.Value >= "100%" Then
MsgBox "LOAD FACTOR ACIMA DO PERMITIDO", vbCritical, "ERRO"
End If

End Sub
 
Postado : 10/09/2015 6:35 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ao utilizar uma função de conversão e preciso entender o que essa função retorna. a função Val, dependendo do string fornecido, irá retornar um numero inteiro.
Prefira utilizar CDec, ao informar à Funçõ format, deve-se atentar que em VBA o separador centavos e o ponto não virgula, essa e separador de milhar.
Assim deverá funcionar

Me.loadfactor_txt.Value = Format(CDec(loadfactor_txt.Value) / 100, "##.00%")

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

 
Postado : 10/09/2015 8:18 am
(@afbergman)
Posts: 108
Estimable Member
Topic starter
 

Reinaldo,

Obrigado pela ajuda, mas esta dando erro "Tipos incompatíveis 13".

Quando calcula porém me retorna o valor errado, ele nao considera o valor correto, exemplo: 210/209*100 = 100,47% -------------> ele me retorna 100%.
Gostaria que retornasse os exatos 100,47%.

 
Postado : 10/09/2015 2:06 pm
(@afbergman)
Posts: 108
Estimable Member
Topic starter
 

Não funciona!!! Ele me retorna o valor inteiro, exemplo:

210/209*100=100,49%-----------> ele me retorna 100,00%

O que podemos fazer?

 
Postado : 10/09/2015 2:16 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Afbergman, juntei os dois topicos por entender se tratarem da mesma questão. Por gentileza evite abrir topicos repetidos, de sempre sequencia no primeiro.
Grato pela compreensão.
Mauro Coutinho
Moderador

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

 
Postado : 10/09/2015 3:51 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tente assim :

loadfactor_txt = Application.Round(CDbl(loadfactor / seatconfiguration * 100), 2) & "%"

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

 
Postado : 10/09/2015 8:29 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Espero que a proposta do colega Mauro o atenda;
porem em seu trecho de rotina há apenas uma variavel que é dividida por 100 --> Format(Val(loadfactor_txt.Value) / 100, "##,00%")
Agora você diz não funciona -->"210/209*100" retorna.... se são duas variáveis e essas são oriundas de um TextBox; tem que adequar a rotina
Então supondo que:
LoadFactor_txt = "210" e SeatConfiguration = "209"
a linha de calculo ficaria
LoadFactor_txt = Format(CDec(LoadFactor_txt / SeatConfiguration), "##.00%")

Aqui não há necessidade de multiplicar ou dividir por 100

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

 
Postado : 11/09/2015 11:54 am
(@afbergman)
Posts: 108
Estimable Member
Topic starter
 

Tente assim :

loadfactor_txt = Application.Round(CDbl(loadfactor / seatconfiguration * 100), 2) & "%"

Essa funcionou perfeitamente!
Muito obrigado.

 
Postado : 11/09/2015 5:18 pm
(@afbergman)
Posts: 108
Estimable Member
Topic starter
 

Agora se eu quiser acrescentar a rotina para que se o valor da textbox for maior que 100% apareça uma msgbox informado que o valor esta acima, e se o valor estiver dentro dos 100% apareça outra msgbox dizendo que o valor esta dentro do limite?
Como faço isso?

Abraços.

 
Postado : 11/09/2015 5:20 pm
(@afbergman)
Posts: 108
Estimable Member
Topic starter
 

Quem poderia me ajudar nessa?

 
Postado : 14/09/2015 10:16 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 
Private Sub loadfactor_txt_Change()
loadfactor_txt = "100,00%"
loadfactor_txt = Replace(loadfactor_txt, "%", "", 1) / 100
    
    If loadfactor_txt > 1 Then
       MsgBox "LOAD FACTOR ESTÁ ACIMA DO LIMITE PERMITIDO", vbCritical, "ERRO"

    'ElseIf loadfactor_txt <= 1 Then

    Else
       MsgBox "LOAD FACTOR DENTRO DO LIMITE PERMITIDO", vbExclamation, "LOAD FACTOR"
    End If

End Sub

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

 
Postado : 14/09/2015 11:39 am