none
Formatar RG em Formulário Word RRS feed

  • Pergunta

  • Prezados,

    Estou desenvolvendo um formulário no Word, não sou experiente mas está ficando bom, só que encontrei alguns problemas que é formatar o RG, usei a fórmula abaixo, ela da certo, porém usei como 2 dígitos no início e tem pessoas que só possuem 1 dígito, não sei como fazer para que aceite 1 ou 2 dígitos, também tentei usar em conjunto a seguinte fórmula, que é impedir que letras sejam digitadas, não deu certo, alguém poderia me ajudar?

    Private Sub CheckBox16_Change()
        If IsNumeric(CheckBox16.Text) Then
    If Len(CheckBox16.Text) = 9 Then
    parte1 = Left(CheckBox16.Text, 2)
    parte2 = Left(CheckBox16.Text, 3)
    parte2b = Right(parte2, 3)
    parte3 = Left(CheckBox16.Text, 8)
    parte3b = Right(parte3, 3)
    parte4 = Right(CheckBox16.Text, 1)
    CheckBox16.Text = parte1 & "." & parte2b & "." & parte3b & "-" & parte4
    End If
    End If
    End Sub

    Está fórmula usei para impedir que "letras" sejam digitadas, dava certo antes de inserir a que formata o RG, porém tem que haver uma exceção no digito final que em alguns casos se usa o "X", o mesmo problema tenho nos campos de telefone em que não quero que se digite letras:

    Private Sub CheckBox16_Change()
        If Not IsNumeric(CheckBox16.Text) Then CheckBox16.Text = Empty
    End Sub

    Só para constar também uso a fórmula abaixo na mesma caixa de texto para pular o campo usando a tecla TAB, com ela está tudo normal, se alguém souber alguma fórmula que ao preencher a quantidade limite de caracteres determinados para a caixa de texto o cursor pule para a caixa seguinte agradeceria:

    Private Sub CheckBox16_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode = vbKeyTab Or KeyCode = 13 Then
            TextBox4.Activate
        End If
    End Sub

    Desde já grato!

    quinta-feira, 6 de julho de 2017 12:57

Respostas

  • Não está rodando porque você colocou as caixas de texto diretamente na folha do Word. Para o código funcionar, você deve colocar as caixas de texto dentro de um UserForm.

    Anderson Diniz

    • Sugerido como Resposta AndersonFDiniz2 terça-feira, 11 de julho de 2017 19:40
    • Marcado como Resposta Silvio2003 quarta-feira, 12 de julho de 2017 10:30
    terça-feira, 11 de julho de 2017 19:40

Todas as Respostas

  • Anderson, obrigado mais uma vez pelo auxílio.

    Mudei para TextBox12, mas não deu certo,  segue abaixo como está:

    Private Sub TextBox12_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        If IsNumeric(TextBox12.Text) Then
    If Len(TextBox12.Text) = 9 Then
    parte1 = Left(TextBox12.Text, 2)
    parte2 = Left(TextBox12.Text, 5)
    parte2b = Right(parte2, 3)
    parte3 = Left(TextBox12.Text, 8)
    parte3b = Right(parte3, 3)
    parte4 = Right(TextBox12.Text, 1)
    TextBox12.Text = parte1 & "." & parte2b & "." & parte3b & "-" & parte4

    ElseIf Len(TextBox12.Text) = 8 Then

    parte1 = Left(TextBox12.Text, 1)
    parte2 = Left(TextBox12.Text, 4)
    parte2b = Right(parte2, 3)
    parte3 = Left(TextBox12.Text, 7)
    parte3b = Right(parte3, 3)
    parte4 = Right(TextBox12.Text, 1)
    TextBox12.Text = parte1 & "." & parte2b & "." & parte3b & "-" & parte4

    End If
    End If

    End Sub

    A segunda deu o erro 438, que diz:" O objeto não aceita está propriedade ou método".

    A segunda caixa é número 4.

    Private Sub TextBox12_Change()

    If Len(TextBox12.Text) = 9 Then
    TextBox4.SetFocus
    End If
    End Sub

    sexta-feira, 7 de julho de 2017 11:11
  • Infelizmente tentei por várias vezes e não deu certo, não formata. Como disse na resposta, eu exclui a CheckBox e coloquei uma TextBox.
    sexta-feira, 7 de julho de 2017 22:04
  • Prezado Anderson,

    Tentei novamente e nada, segue o link do vídeo para verificar, com 8 dígitos ou 9 ele não formata, esqueci apenas de colocar o cursor fora da caixa de texto no vídeo, mas também já havia tentado diversas, mas pode ver que com 9 também não formata.

    https://youtu.be/VJoC0OlOuGk







    • Editado Silvio2003 sábado, 8 de julho de 2017 19:31
    sábado, 8 de julho de 2017 19:29
  • Na tentativa anterior havia colocado a TextBox12, (No vídeo acabei esquecendo) que foi quando deu o erro, 

    Erro 438, que diz:" O objeto não aceita está propriedade ou método".

    Private Sub TextBox12_Change()

    If Len(TextBox12.Text) = 9 Then
    TextBox4.SetFocus
    End If
    End Sub

    Em relação a executar o formulário, não sei direito como fazer,  tentei, criei uma macro mas deu erro, quais as etapas que devo seguir, se puder ajudar agradeço?

    domingo, 9 de julho de 2017 18:13
  • Já enviei.
    domingo, 9 de julho de 2017 23:34
  • Não está rodando porque você colocou as caixas de texto diretamente na folha do Word. Para o código funcionar, você deve colocar as caixas de texto dentro de um UserForm.

    Anderson Diniz

    • Sugerido como Resposta AndersonFDiniz2 terça-feira, 11 de julho de 2017 19:40
    • Marcado como Resposta Silvio2003 quarta-feira, 12 de julho de 2017 10:30
    terça-feira, 11 de julho de 2017 19:40
  • Anderson,

    Mais uma vez obrigado pela sua ajuda.

    quarta-feira, 12 de julho de 2017 10:31