CAMPO NUMERICO DE MASKEDIT INCOMPLETO
Por favor, me digam como mandar uma mensagem dizendo q o campo numérico de uma maskedit está incompleto. Como no exemplo: No campo de CPF é para ser digitado 11 números, se digitar menos que 11 números aparece uma mensagem dizendo pra digitar corretamente...muito obrigado pela atenção
Tenta isso..
Espero ter ajudado...
Falwosss
Renan
Private Sub txtCPF_LostFocus()
If Len(txtCPF) < 14 Or txtCPF = "___.___.___-__" Then
MsgBox "CPF Incompleto!"
txtCPF.SetFocus
Exit Sub
End If
End SubEspero ter ajudado...
Falwosss
Renan
Isso não funciona muito bem, ao menos não da forma desejada.
Veja, o controle txtCPF é um Masked Edit Box, que por padrão mantém a máscara de entrada na propriedade Text, que é a propriedade padrão. Assim, ao usar:
Private Sub txtCPF_LostFocus()
If Len(txtCPF) < 14 Or txtCPF = "___.___.___-__" Then
MsgBox "CPF Incompleto!"
txtCPF.SetFocus
Exit Sub
End If
End Sub
Caso o usuário não preencha alguns dos dÃgitos, ainda assim, o Len da propriedade Text teria mais do que os 14 caracteres (CNPJ) ou 11 caracteres (CPF) solicitados.
A propriedade que se faz necessária para saber o tamanho especÃfico do texto digitado, excluindo-se as máscaras, em um Masked Edit Box, é a ClipText.
Outra questão é embutir uma chamada Exit Sub em uma estrutura onde não há quaisquer outras operações posteriores. Não é necessária, nesse caso.
A sub poderia ficar mais ou menos assim, para funcionar:
Private Sub txtCPF_LostFocus()
If Not Len(txtCPF.ClipText) < 14 Then
...processos. Aqui cabem as rotinas para validação de dÃgito (módulo 11)
Else
MsgBox "CPF Incompleto!"
txtCPF.SetFocus
End If
End Sub
Claro, há as configurações do Masked, bem como outras formas de trabalho. Mas a ClipText se mostra bem simples e útil neste caso.
Veja, o controle txtCPF é um Masked Edit Box, que por padrão mantém a máscara de entrada na propriedade Text, que é a propriedade padrão. Assim, ao usar:
Private Sub txtCPF_LostFocus()
If Len(txtCPF) < 14 Or txtCPF = "___.___.___-__" Then
MsgBox "CPF Incompleto!"
txtCPF.SetFocus
Exit Sub
End If
End Sub
Caso o usuário não preencha alguns dos dÃgitos, ainda assim, o Len da propriedade Text teria mais do que os 14 caracteres (CNPJ) ou 11 caracteres (CPF) solicitados.
A propriedade que se faz necessária para saber o tamanho especÃfico do texto digitado, excluindo-se as máscaras, em um Masked Edit Box, é a ClipText.
Outra questão é embutir uma chamada Exit Sub em uma estrutura onde não há quaisquer outras operações posteriores. Não é necessária, nesse caso.
A sub poderia ficar mais ou menos assim, para funcionar:
Private Sub txtCPF_LostFocus()
If Not Len(txtCPF.ClipText) < 14 Then
...processos. Aqui cabem as rotinas para validação de dÃgito (módulo 11)
Else
MsgBox "CPF Incompleto!"
txtCPF.SetFocus
End If
End Sub
Claro, há as configurações do Masked, bem como outras formas de trabalho. Mas a ClipText se mostra bem simples e útil neste caso.
esse evento VALIDATE é melhor do que LOSTFOCUS nessas situações
Private Sub MaskEdBox1_Validate(Cancel As Boolean)
'coloque promptinclude = false
If Len(MaskEdBox1.Text) < 11 Then MsgBox "incompleto": Cancel = True: MaskEdBox1.SetFocus
End Sub
Tópico encerrado , respostas não são mais permitidas