Formatações e macros sobre textbox - JJoão (04/2002)
Formatação de datas numa TextBox simples
Ao digitar uma data num TextBox esta macro insere automaticamente os separadores, a unica regra é inserir o dia e o mês com 2 dígitos e o ano com 2 ou 4 dígitos.
Ao digitar o 2º digito do dia ou do mês a barra é adicionada automaticamente. Sem validação de digitação
Private Sub TextBox1_Change()
'formatar a entrada da data
If Len(TextBox1) = 2 Or Len(TextBox1) = 5 Then
TextBox1.Text = TextBox1.Text & "/"
SendKeys "{End}", True
End If
End Sub
Esta é mais completa, além de inserir os já referidos separadores, permite apagar sem que seja preenchido automaticamente as '/' e faz também uma verificação dos caracteres permitidos numa data
Private Sub txtData_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 8, 48 To 57 ' BackSpace e numericos
If Len(txtData) = 2 Or Len(txtData) = 5 Then
txtData.Text = txtData.Text & "/"
SendKeys "{End}", False
End If
Case Else ' o resto é travado
KeyAscii = 0
End Select
End Sub
Controle de data
Esta macro permite controlar a data inserida numa textbox ao se sair desta, só permitindo a saída após a digitação de uma data válida, apresentando mensagem de erro na própria textbox
Private Sub txtData_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim DataAnterior
Dim x
If IsDate(txtData) = True Then
'Formata a data como 01/Jan/2002
txtData.Text = Format(txtData.Text, "dd/mmm/yyyy")
Else
DataAnterior = txtData.Text
txtData = "Data Invalida!!!"
'temporizador simples para se ler a mensagem de erro
For i = 1 To 3000
DoEvents
x = x + 1
Next
txtData = DataAnterior
With txtData
.SetFocus
.SelStart = 0
.SelLength = Len(txtData.Text)
End With
Cancel = True
End If
End Sub
Texbox só para numericos
Permite separar os decimais através de uma virgula, não deixando uma segunda digitação deste caracter
Private Sub txtNumericos_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
' BackSpace e numericos
Case 8, 48 To 57
' Virgula, só permite uma, para separador de decimais
Case 44
If InStr(1, txtnumericos.Text, Chr(44), vbTextCompare) > 1 Then _
KeyAscii = 0
Case Else ' o resto é travado
KeyAscii = 0
End Select
End Sub
Seleccionar o conteúdo de uma TextBox
Private Sub TesteSeleccionarTexto_de_Textbox()
With TextBox
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub
|