Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Dúvidas sobre cálculos, funções simples e aninhadas, fórmulas matriciais, etc.
  • Avatar do usuário
#29215
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
#29234
sugestão - disponibilize uma amostra do seu arquivo Excel.
#29251
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
#29253
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
Você não está autorizado a ver ou baixar esse anexo.
#29254
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
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord