Menu
 
 
 
 
 
 


Valid XHTML 1.0 Transitional
Valid CSS!

Visual Basic for Application:

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
Utilidades
 
Transito em directo
 
O Tempo
 
Gerador de Chaves
 
Moedas - Taxas e Cambios
 
 
 
 
 
Classifique o nosso website
@ MUNDOPT.COM
 
Topo