Ir ao conteúdo

Posts recomendados

Postado
Em 15/01/2012 às 21:47, osvaldomp disse:

para permitir a inserção de dígitos somente, em todas as TextBoxes do Form; para permitir outros caracteres em uma ou mais TextBoxes basta incluir seus nomes na condição 'If'.

1. insira um módulo de classe, nomeie-o clsFormEvents, cole nele o código abaixo

 

 

Option Explicit

Public WithEvents txtBox As MSForms.TextBox

Private Sub txtBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If Shift Then KeyCode = 0
    Select Case KeyCode
    Case 8, 13, 46, 48 To 57, 96 To 105, 109, 110, 189, 190
    Case Else
        KeyCode = 0
    End Select
End Sub

 

2.no módulo do UserForm cole o código abaixo

 

 

Option Explicit

Private collTextBoxes As Collection

Private Sub UserForm_Initialize()
Dim tbEvents As clsFormEvents
Dim ctl As Object
Set collTextBoxes = New Collection
For Each ctl In Me.Controls
    If TypeName(ctl) = "TextBox" Then
        Set tbEvents = New clsFormEvents
        Set tbEvents.txtBox = ctl
        collTextBoxes.Add tbEvents
    End If
Next ctl
End Sub

 

Boa Tarde.

Estive pesquisando na net e encontrei este tópico que foi muito util. Apliquei as informações aqui dadas, e funcionou de primeira aqui. Acontece que estou tentando efetuar modificação para um determinado campo utilizando esta técnica mas gostaria que ao digitar os números, fosse formatando em valores: (R$ 1250,00). a medida que fossem digitados, mas não estou conseguindo. Poderia me dar uma orientação de como posso fazer? Desde ficaria imensamente grato.

Segue o código que estava usando, mas só funciona nas teclas numéricas superiores e não das laterais.

Private Sub txtValor_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim zTemp As String
    txtValor.TextAlign = fmTextAlignRight
    If IsNumeric(Chr(KeyCode)) Or KeyCode = 8 Then
        If txtValor.Text <> "" Then
            zTemp = txtValor.Text & IIf(KeyCode <> 8, Chr(KeyCode), "")
            zTemp = Right(zTemp, Len(zTemp) - 2)
            zTemp = Replace(zTemp, ".", "")
            zTemp = Replace(zTemp, ",", "")
            If KeyCode = 8 Then
                If Len(zTemp) > 3 Then
                    zTemp = Left(zTemp, Len(zTemp) - 1)
                Else
                    zTemp = "0" & Left(zTemp, Len(zTemp) - 1)
                End If
            End If
            zTemp = Left(zTemp, Len(zTemp) - 2) & "." & Right(zTemp, 2)
        Else
           zTemp = "0.0" & IIf(KeyCode <> 8, Chr(KeyCode), "0")
        End If
        txtValor.Text = Format(Val(zTemp), "R$ ##,##0.00")
        KeyCode = 0
    Else
       If KeyCode <> 13 And KeyCode <> 9 And KeyCode <> 40 And KeyCode <> 38 Then KeyCode = 0
    End If
End Sub

 

 

Postado

Olá, Jedurio.

Sugiro que você disponibilize uma amostra do seu arquivo.

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!