Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Patricia Senatore Ribeiro

Excel RESOLVIDO Excel, VBA, Como executar um mesmo comando em todas as TextBox

Recommended Posts

Bom dia, mais uma vez venho pedir ajuda. Tenho uma UserForm onde insiro datas nas TextBox1 e nelas aparecem as barras automaticamente, para isso estou usando este código:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)


    If KeyAscii < 48 Or KeyAscii > 57 Then 'Não permite inserir letras
        KeyAscii = 0
    Else
        If Len(TextBox1) = 2 Then  'Len retorna a quantidade de caracteres
            TextBox1 = TextBox1 & "/"
        End If
        If Len(TextBox1) = 5 Then
            TextBox1 = TextBox1 & "/"
        End If
    End If

End Sub

 

O problema é que eu tenho 12 TextBox então teria que inserir uma sub dessa para cada um. Tem algum jeito de eu fazer somente isso somente 1 vez para funcionar em todas as TextBox?

Editado por DiF
Botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se quer fazer isso dinamicamente falando, ou seja se de 12, aumentar a quantidade de textbox para 24, sem precisar mexer no código, segue sugestão:

 

Crie um modulo de classe, e renomeie como SuaClasse e cole o codigo abaixo:

Option Explicit

Public WithEvents TextGroup As MSForms.TextBox

Private Sub TextGroup_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    
            TextGroup.MaxLength = 10 ' limita a qtd max. de caracteres => 01/01/2018

    If KeyAscii < 48 Or KeyAscii > 57 Then 'Não permite inserir letras
    KeyAscii = 0
Else
    If Len(TextGroup) = 2 Then  'Len retorna a quantidade de caracteres
    TextGroup = TextGroup & "/"
End If
If Len(TextGroup) = 5 Then
    TextGroup = TextGroup & "/"
End If
End If

End Sub

E no seu userform que contem as textbox (data), acrescente o código abaixo:

 

Option Explicit

Public WithEvents TextGroup As MSForms.TextBox

Dim TextBoxes() As New SuaClasse

Private Sub UserForm_Initialize()
    
    Call CarregaSuaClasseTextbox ' Chama a sub que configura os textbox, adicionando a classe
    
End Sub

Sub CarregaSuaClasseTextbox()
    Dim ctl As MSForms.Control
    Dim i!
    
    i = 1
    
    For Each ctl In Me.Controls
        
        If TypeName(ctl) = "TextBox" Then
            ReDim Preserve TextBoxes(1 To i)
            Set TextBoxes(i).TextGroup = ctl
            i = i + 1
        End If
        
    Next ctl    

End Sub

 

* Desta forma em todos os textbox aparecerão as barras automaticamente, ao digitar os numeros

 

Uma outra opção seria, colocar um form/calendário, que abre como um pop-up para o usuário clicar para inserir uma data. Desta forma evitará erros na formatação ou data inválida do tipo: 30/02/2018.

 

 

 

Editado por Basole
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×