Página 1 de 1

Limpar todos os componentes de um formulário

Enviado: 05 Jan 2018 às 09:32
por Marcelo85
Gostaria de limpar todos os componentes de um formulário (TextBox, ComboBox, etc) através de uma função. Encontrei o seguinte código na internet, porém quando eu executo limpa apenas os combobox do meu formulário, os textbox continuam com o conteúdo digitado pelo usuário. O que será que está errado?
Código: Selecionar todos
Public Function LimparComponentes(formulario As UserForm)
    
    Dim controle As Control
    Dim i As Integer

    For i = 0 To formulario.Controls.Count - 1
    
        Set controle = formulario.Controls(i)

        If TypeOf controle Is TextBox Then

            controle.Text = Empty
    
        End If
        
        If TypeOf controle Is ComboBox Then
        
            controle.Text = Empty
        
        End If

    Next i

End Function

Re: Limpar todos os componentes de um formulário

Enviado: 05 Jan 2018 às 18:44
por osvaldomp
sugestão - disponibilize uma amostra do seu arquivo Excel.

Limpar todos os componentes de um formulário

Enviado: 06 Jan 2018 às 15:45
por Marcelo85
Olá Osvaldo,

Primeiramente, obrigado pela disposição em ajudar.

Coloquei um arquivo exemplo em anexo.

Abraço!

Re: Limpar todos os componentes de um formulário

Enviado: 06 Jan 2018 às 16:30
por osvaldomp
Olá, Marcelo.

Segue uma alternativa sem utilizar Function.
Coloque o código abaixo no lugar do código atual vinculado ao botão "limpar".
Código: Selecionar todos
Private Sub CommandButton1_Click()
 Dim controle As Control
  For Each controle In Me.Controls
   If TypeName(controle) = "TextBox" Or TypeName(controle) = "ComboBox" Then
    controle.Text = ""
   End If
  Next controle
End Sub

Re: Limpar todos os componentes de um formulário

Enviado: 06 Jan 2018 às 20:53
por Amado
Viva Marcelo.

Caso prefira também pode optar pela sugestão que anexo; acciona o gravador de macros, dá um nome à macro, seleciona os campos que pretende limpar e desliga o gravador.

Espero ter ajudado.
Amado

Re: Limpar todos os componentes de um formulário

Enviado: 06 Jan 2018 às 21:58
por Reinaldo
Outra possibilidade, alterando sua função conforme segue:
Código: Selecionar todos
Public Function LimparComponentes(formulario As UserForm)
Dim controle As Control
Dim i As Integer

For i = 0 To formulario.Controls.Count - 1
    
    Set controle = formulario.Controls(i)

    If TypeOf controle Is msforms.TextBox Then
        controle.Text = Empty
    End If
        
    If TypeOf controle Is msforms.ComboBox Then
        controle.Text = Empty
    End If

Next
End Function

Limpar todos os componentes de um formulário

Enviado: 08 Jan 2018 às 09:15
por Marcelo85
Bom dia Pessoal!!!

Agradeço imensamente a todos pela ajuda, mas a solução do Reinaldo foi a mais adequada para o que eu preciso. Funcionou certinho.

Abraços.