Notifications
Clear all

Textbox/Formato decimal

7 Posts
3 Usuários
0 Reactions
1,291 Visualizações
kurkas
(@kurkas)
Posts: 85
Trusted Member
Topic starter
 

Olá,
Tenho procurado a solução que melhor me serve para resolver o meu problema e não consigo encontrar.
Preciso que na Textbox1, quando eu digitar por exemplo: 45
ela apresente 45, 00
E quando eu digitar por exemplo: 4534
ela apresente 45,34

Os valores dirão respeito a litros e eu quero com décimas.
Queria também que quando eu digitar e precisar apagar ela responda, pois já tentei outras soluções e depois de digitar já não consigo apagar.
Obrigado a todos.

 
Postado : 17/01/2014 3:01 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Vc precisa estabelecer algumas regras... Por exemplo: que valores deve-se dividir por 100 e que valores devem permanecer? Se eu digitar 453, o resultado é 45,30 ou 453,00? E assim por diante... Primeiro defina os parâmetros porque os algoritmos são relativamente simples.

Se não avançar avise.

Abs,

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

 
Postado : 17/01/2014 5:39 pm
kurkas
(@kurkas)
Posts: 85
Trusted Member
Topic starter
 

Boa tarde,
Não me tinha ocorrido isso, mas tem toda a razão.
Assim sendo será melhor deixar estar como está, visto que algumas vezes se vai digitar centenas, e outras vezes dezenas.
Agradeço a observação.
Obrigado.

 
Postado : 18/01/2014 10:56 am
Basole
(@basole)
Posts: 487
Reputable Member
 

kurkas,
Tente adaptar as suas condicoes, pelo menos atende a sua 2ª ( "E quando eu digitar por exemplo: 4534 ela apresente 45,34" ).

Private Sub TxtSeuText_Change()
Dim i As Integer, T As String
With TxtSeuText
    'Armazena o Text, para nao causar o evento change a toa
    T = .Text
    'Armazena o SelStart da Dir. para Esq., pois o alinhamento é esq.
    i = Len(T) - .SelStart
    'Tira a virgula da var T
    T = Replace(.Text, ",", "")
    'Acrescenta zeros
    If Len(T) < 3 Then T = String(3 - Len(T), "0") & T
    'Monta o nr separando as casas
    T = Mid(T, 1, Len(T) - 2) & "," & Mid(T, Len(T) - 1)
    'Formata o nr para tirar os zeros a mais q podem ficar no começo
    T = Format(T, "#,##0.00")
    'Verifica se o valor do Text é <> da Var. T (para nao travar no evento Change)
    If .Text <> T Then .Text = T
    'Como mudou o valor do TextBox, tem q voltar o SelStart ao q era antes
    .SelStart = Len(T) - i
End With
End Sub

Fonte: codigo postado em outro site pelo: Reinaldo L. De Marco

Click em se a resposta foi util!

 
Postado : 18/01/2014 1:07 pm
kurkas
(@kurkas)
Posts: 85
Trusted Member
Topic starter
 

Esquisito, tentei e nada aconteceu!!

 
Postado : 19/01/2014 2:17 pm
Basole
(@basole)
Posts: 487
Reputable Member
 

kurkas,
Talves voce não tenha alterado todos os " TxtSeuText " do codigo, para o nome do seu TextBox

Click em se a resposta foi util!

 
Postado : 19/01/2014 4:14 pm
kurkas
(@kurkas)
Posts: 85
Trusted Member
Topic starter
 

Basole,
funcionou!
Tinha feito mal.
Ficou nice!!!
Obrigado

 
Postado : 20/01/2014 2:12 pm