CARACTERES NUMERICOS?
Galera,
Gostaria de um código que:
Só fosse possivel inserir caracteres numericos no TextBox, e que também fosse possivel a inserção de casas decimais, de preferencia em que o valor no Textbox se ajustasse no formato de [ô]Dinheiro[ô] ou algo parecido.
Quem puder ajudar serei muito grato.
Vlw!
Gostaria de um código que:
Só fosse possivel inserir caracteres numericos no TextBox, e que também fosse possivel a inserção de casas decimais, de preferencia em que o valor no Textbox se ajustasse no formato de [ô]Dinheiro[ô] ou algo parecido.
Quem puder ajudar serei muito grato.
Vlw!
***Coloque estes códigos num Módulo:***
Public Sub MascMoeda(ByVal Controle As TextBox)
Dim i As Integer, T As String
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 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
Public Sub ApenasNrs(ByRef KeyAscii As Integer)
Select Case KeyAscii
[ô]Se a tecla for numérica (0 - 9) ou o backspace (8)
Case Asc([Ô]0[Ô]) To Asc([Ô]9[Ô]), 8
[ô]Se não for numérica
Case Else
Beep [ô]Som de erro, nao é necessário
KeyAscii = 0 [ô]Cancela a entrada
End Select
End Sub
Public Sub SelTudo(ByVal Controle As TextBox)
[ô]Posiciona o cursor no começo
Controle.SelStart = 0
[ô]Seleciona todo o TextBox
Controle.SelLength = Len(Controle.Text)
End Sub
========================================
***Para testar as funções, coloque um TextBox (Text1) em um form e cole o código abaixo:***
Private Sub Text1_Change()
MascMoeda Text1 [ô]Para criar a máscara de moeda
End Sub
Private Sub Text1_GotFocus()
SelTudo Text1 [ô]Para selecionar todo TextBox
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
ApenasNrs KeyAscii [ô]Para aceitar apenas nrs
End Sub
========================================
Comentários são bem-vindos...
Matheus de Oliveira (matioli.matheus@hotmail.com)
SNIFFER,
vc pode digitar normal os numeros no textbox, pra formatar vc pode usar o vento LostFocus, tipo:
Text1 = Format(Text1, [Ô]#,#00.00[Ô])
porém existem outrosmodelos de formatação, bem como, outros controls q fazem essa formatção nativamente.
aconselho usar o botao [ô]Pesquisar[ô] no canto superior direito, com crtza encontrarás uma solução.
vc pode digitar normal os numeros no textbox, pra formatar vc pode usar o vento LostFocus, tipo:
Text1 = Format(Text1, [Ô]#,#00.00[Ô])
porém existem outrosmodelos de formatação, bem como, outros controls q fazem essa formatção nativamente.
aconselho usar o botao [ô]Pesquisar[ô] no canto superior direito, com crtza encontrarás uma solução.
Private Sub txtValorCompra_KeyPress(KeyAscii As Integer)
If InStr(1, [Ô]0123456789,[Ô] & vbKeyDelete & Chr(8), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
If InStr(1, [Ô]0123456789,[Ô] & vbKeyDelete & Chr(8), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Tópico encerrado , respostas não são mais permitidas