MASCARA DINAMICA TEXTBOX
Senhores muito bom dia, estou com uma duvida de como executar a rotina, algum dos amigos pode me ajudar por favor? veja so, eu tenho um parametro no sistema, (MASCARA DE ESTRUTURA) esta mascara é definida como numeros 9 ex : 9.9.9.99.9999 , so que estou precisando o seguinte, no cadastro no campo estrutura o sistema dinamicamente ir colocando os pontos para mim e nao deixar eu sair da mascara que o cliente definiu, ex : quando eu digitar 1 o sistema ja colocar o ponto para o proximo codio 1. , e assim sucessivamente..
bom vamos ver se ajudo
bom é simples de usar basta colocar no evento keypress do textbox que receberá esta mascara
Exemplo
ps fiz o código aqui e não testei teste, este é o caminho
Function MascaraDinamica(obj As TextBox, Keyasc As Integer)
[txt-color=#007100][ô] Primeiro so permitiremos numeros e o Backspace no campo com o if abaixo[/txt-color]
If Not ((Keyasc >= Asc([Ô]0[Ô]) And Keyasc <= Asc([Ô]9[Ô])) Or Keyasc =8) then
Keyasc = 0
Exit Function
End If
If Keyasc <>8 Then [txt-color=#007100][ô] se não for o backspace[/txt-color]
If Len(obj.Text) = 1 Or _
Len(obj.Text) = 3 Or _
Len(obj.Text) = 5 Or _
Len(obj.Text) = 8 Then
obj.Text = obj.Text & [Ô].[Ô]
obj.SelStart = Len(obj.Text)
End If
End If
End Function
bom é simples de usar basta colocar no evento keypress do textbox que receberá esta mascara
Exemplo
Private Sub Text1_KeyPress(KeyAscii As Integer)
MascaraDinamica Text1, KeyAscii
End sub
ps fiz o código aqui e não testei teste, este é o caminho
Eu usei isso uma vez, só que eu ia contando os caracteres
Ex: TotalCaracteres = 1 então text = text & [Ô].[Ô] se TotalCaracteres = 3 então text = text & [Ô].[Ô] e assim vai, lembrando que esse não é o código, é só a logica da coisa, até...
Ex: TotalCaracteres = 1 então text = text & [Ô].[Ô] se TotalCaracteres = 3 então text = text & [Ô].[Ô] e assim vai, lembrando que esse não é o código, é só a logica da coisa, até...
Sub Mascarar(Text As TextBox, Mascara As String, KeyAscii As Integer)
[ô]Luiz Comino 20/06/2012
If vbKeyBack = KeyAscii Then Exit Sub
Text.MaxLength = Len(Mascara)
Dim MtzDigitos() As String
Dim MtzMsk() As String
Dim Qtd As Integer
Dim i, x As Integer
For i = 1 To Len(Mascara)
x = x + 1
If Mid(Mascara, i, 1) <> [Ô]#[Ô] Then
Qtd = Qtd + 1
ReDim Preserve MtzDigitos(Qtd)
ReDim Preserve MtzMsk(Qtd)
MtzDigitos(Qtd) = x - 1
MtzMsk(Qtd) = Mid(Mascara, i, 1)
End If
Next
For i = 1 To UBound(MtzMsk)
If Len(Text) = MtzDigitos(i) Then
Text = Text & MtzMsk(i)
Text.SelStart = Len(Text1)
End If
Next
End Sub
Para Utlizar --------
Private Sub Text1_KeyPress(KeyAscii As Integer)
Mascarar Text1, [Ô]#.#.#.##.#####[Ô], KeyAscii
End sub
[ô]Luiz Comino 20/06/2012
If vbKeyBack = KeyAscii Then Exit Sub
Text.MaxLength = Len(Mascara)
Dim MtzDigitos() As String
Dim MtzMsk() As String
Dim Qtd As Integer
Dim i, x As Integer
For i = 1 To Len(Mascara)
x = x + 1
If Mid(Mascara, i, 1) <> [Ô]#[Ô] Then
Qtd = Qtd + 1
ReDim Preserve MtzDigitos(Qtd)
ReDim Preserve MtzMsk(Qtd)
MtzDigitos(Qtd) = x - 1
MtzMsk(Qtd) = Mid(Mascara, i, 1)
End If
Next
For i = 1 To UBound(MtzMsk)
If Len(Text) = MtzDigitos(i) Then
Text = Text & MtzMsk(i)
Text.SelStart = Len(Text1)
End If
Next
End Sub
Para Utlizar --------
Private Sub Text1_KeyPress(KeyAscii As Integer)
Mascarar Text1, [Ô]#.#.#.##.#####[Ô], KeyAscii
End sub
Luiz de Boa velho....
.......essa sub foi f.... arrebentou, como nunca pensei nisso, rs
show de bola mesmo muito pratica pode ser usada pra tudo meu.
parabens
.......essa sub foi f.... arrebentou, como nunca pensei nisso, rs
show de bola mesmo muito pratica pode ser usada pra tudo meu.
parabens
tbm pode ser feito assim né:
[txt-color=#007100][ô]Coloque este código no evento change do textbox[/txt-color]
[txt-color=#0000f0] If Len(Text1) = 1 Then
Text1 = Text1 & [Ô].[Ô]
Text1.SelStart = 3
End If
If Len(Text1) = 3 Then
Text1 = Text1 & [Ô].[Ô]
Text1.SelStart = 5
End If
If Len(Text1) = 5 Then
Text1 = Text1 & [Ô].[Ô]
Text1.SelStart = 7
End If
If Len(Text1) = 8 Then
Text1 = Text1 & [Ô].[Ô]
Text1.SelStart = 10
End If
Text1.MaxLength = 13[/txt-color][txt-color=#007100] [ô] se no caso tiver que colocar apenas 13 caracteres dentro do text[/txt-color]
[txt-color=#007100][ô]Coloque este código no evento change do textbox[/txt-color]
[txt-color=#0000f0] If Len(Text1) = 1 Then
Text1 = Text1 & [Ô].[Ô]
Text1.SelStart = 3
End If
If Len(Text1) = 3 Then
Text1 = Text1 & [Ô].[Ô]
Text1.SelStart = 5
End If
If Len(Text1) = 5 Then
Text1 = Text1 & [Ô].[Ô]
Text1.SelStart = 7
End If
If Len(Text1) = 8 Then
Text1 = Text1 & [Ô].[Ô]
Text1.SelStart = 10
End If
Text1.MaxLength = 13[/txt-color][txt-color=#007100] [ô] se no caso tiver que colocar apenas 13 caracteres dentro do text[/txt-color]
Opa Marcelo receber elogios de você é uma grande honra muito obrigado!
Sem rasgação de ceda colega, mas quando a coisa é bem feita tem deve ser elogiada, esta sub que você postou é muito boa, é pratica demais, ela pode ser usada pra tudo mudando apenas a mascara tipo
(##) ####-#### [ô] telefone
###.###.###-## [ô] cpf
#####-### [ô] cep
etc
só tenho de elogiar mesmo muito boa se não se incomodar estou passando a usa-la em meus desenvolvimentos
abraço
(##) ####-#### [ô] telefone
###.###.###-## [ô] cpf
#####-### [ô] cep
etc
só tenho de elogiar mesmo muito boa se não se incomodar estou passando a usa-la em meus desenvolvimentos
abraço
imagina, pode usar sem problemas, o conhecimento foi feito para ser passado!
é da hora mesmo, estive testanto e vi que fica bem melhor.
basta colocar a mascara como quiser
Private Sub Text1_KeyPress(KeyAscii As Integer)
Mascarar Text1, [txt-color=#e80000][Ô]#.#.#.##.#####[Ô][/txt-color], KeyAscii [txt-color=#007100][ô]vc pode colocar a mascara do modo que ser ai dentro né[/txt-color]
telefone = [Ô](##)####-####
cpf = ###.###.###-##
RG = ##.###.###-#
e qualquer mascara que quiser ultilizar...
End sub
quem sabe, sabe!
basta colocar a mascara como quiser
Private Sub Text1_KeyPress(KeyAscii As Integer)
Mascarar Text1, [txt-color=#e80000][Ô]#.#.#.##.#####[Ô][/txt-color], KeyAscii [txt-color=#007100][ô]vc pode colocar a mascara do modo que ser ai dentro né[/txt-color]
telefone = [Ô](##)####-####
cpf = ###.###.###-##
RG = ##.###.###-#
e qualquer mascara que quiser ultilizar...
End sub
quem sabe, sabe!
Tópico encerrado , respostas não são mais permitidas