H o l a: Para ilustrar mi ejemplo, voy a suponer que el formulario UserForm2 tiene los textbox, combobox y checkbox que se van a limpiar.
Para limpiar todos los textbox, combos y checks de un formulario, pon lo siguiente en un módulo:
Sub Limpiar_Controles_Del_Userform2()
'Por.Dante Amor
'Limpia todos los textbox, combos y checks del formulario2
For Each ctrl In UserForm2.Controls
If TypeName(ctrl) = "TextBox" Or _
TypeName(ctrl) = "ComboBox" Then
ctrl.Value = ""
ElseIf TypeName(ctrl) = "CheckBox" Then
ctrl.Value = False
End If
Next
End Sub
Ahora, en cualquier formulario, puede ser el userform1 o el mismo userform2, pon el siguiente código en un botón:
Private Sub CommandButton2_Click()
Call Limpiar_Controles_Del_Userform2
End Sub
Entonces, si estás ejecutando el UserForm1, y quieres limpiar los datos del Userform2, simplemente presionas el botón y los datos serán limpiados.
También puedes poner el botón en el UserForm2 y limpiará los datos del mismo UserForm2.
Si no quieres limpiar alguno de los controles, simplemente lo pones en una condición, por ejemplo:
Sub Limpiar_Controles_Del_Userform2()
'Por.Dante Amor
'Limpia todos los textbox, combos y checks del formulario2
For Each ctrl In UserForm2.Controls
Select Case ctrl.Name
Case "TextBox1", "ComboBox1"
Case Else
If TypeName(ctrl) = "TextBox" Or _
TypeName(ctrl) = "ComboBox" Then
ctrl.Value = ""
ElseIf TypeName(ctrl) = "CheckBox" Then
ctrl.Value = False
End If
End Select
Next
End Sub
En este caso el TextBox1 y el ComboBox1 no serán limpiados.
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias