Saltar para: Post [1], Pesquisa e Arquivos [2]

Code Snippets Blog

Pequenas rotinas em vba, vbscript e outras linguagens. Noticias sobre informática, workshops, e outras coisas relacionadas com novas tecnologias.

Code Snippets Blog

Pequenas rotinas em vba, vbscript e outras linguagens. Noticias sobre informática, workshops, e outras coisas relacionadas com novas tecnologias.

31
Dez07

VBA - Formatações e macros para Textbox's

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

 

Fonte: http://jjoao2k.no.sapo.pt