DUVIDA TEXTBOX COM VIRGULA
Bom dia Pessoal
Gostaria de saber como faco p manter a virgula numa determinada posicao no caso de digitar valores financeiros ex:
0,00 -> 0,01 -> 0,12 -> 1,20 -> 12,00 -> 120,00 -> 1.200,00 e assim por diante
Agradeco desde ja
Abracos
Gostaria de saber como faco p manter a virgula numa determinada posicao no caso de digitar valores financeiros ex:
0,00 -> 0,01 -> 0,12 -> 1,20 -> 12,00 -> 120,00 -> 1.200,00 e assim por diante
Agradeco desde ja
Abracos
voce ja tentou utilizar o componente MaskedTextBox?
abraços
abraços
Não sei sé é isso que deseja
Private Sub TextBox2_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.LostFocus
TextBox2.Text = Format(TextBox2.Text, [Ô]currency[Ô])
End Sub
se voce digitar 1,5 quando perder o foco fica R$ 1,50
se voce digitar 15 quando perder o foco fica R$ 15,00
Private Sub TextBox2_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.LostFocus
TextBox2.Text = Format(TextBox2.Text, [Ô]currency[Ô])
End Sub
se voce digitar 1,5 quando perder o foco fica R$ 1,50
se voce digitar 15 quando perder o foco fica R$ 15,00
na verdade o nosso amigo queria que a formatação estivesse sendo criada ao mesmo tempo que o usuario for digitando o numero, e se utilizar esta funçao no evento TextChange do componente TextBox, a posição atual do cursor acaba sendo perdida. Sendo iniciada na casa do centavo. assim que o usuario digite um novo numero, o numero anterior deixa de ser uma unidade de centavo e passa a ser uma dezena de centavo. assim por diante.
Amigo no evento Leave vc pode por esse código
If Not String.IsNullOrEmpty(txtValor.Text) Then
txtValor.Text = Format(CType(txtValor.Text, Decimal), [Ô]0.00[Ô])
End If
no evento Change coloca:
MascMoeda SeuText
Coloca em um modulo:
Public Sub MascMoeda(ByVal controle As TextBox)
Dim i As Integer, T As String
On Error Resume Next
With controle
[ô]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
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
MascMoeda SeuText
Coloca em um modulo:
Public Sub MascMoeda(ByVal controle As TextBox)
Dim i As Integer, T As String
On Error Resume Next
With controle
[ô]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
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
Tópico encerrado , respostas não são mais permitidas