Reducir lines de código

Tengo un evento Private Sub ButonLimpia_Click() en el cual tengo varios TextBox y demás.
Quisiera reducir lineas al máximo, en ese código para no ser tan largo una ves que algo mas tengo que agregarle pero, que hiciera su función de limpiar
Private Sub ButonLimpia_Click()
Application.EnableEvents = False
Application.ScreenUpdating = False
'''''''''''
Rem Vacía solamente los TextBox
'Dim Clear 'variable para los controles TextBox
'For Each Clear In Sheets(1).Controls 'recorremos todos los controles en el userform llamado Formulario
'If TypeName(Clear) = "TextBox" Then 'verificamos que sea SOLO control Textbox
'Clear.Value = "" 'Limpiamos los TextBox
'End If
'Next
'''''''''''
'''''''''''''
Rem Limpia los TextBox y 1 ComboBox
ComboBox1.Text = ""
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
TextBox7.Value = ""
TextBox9.Value = ""
TextBox10.Value = ""
TextBox12.Value = ""
TextBox13.Value = ""
cmbEdit_Insrt_Elim.Enabled = False
cmbEdit_Insrt_Elim.Caption = "Edita/Inserta/Elimina"
OptInsertar.Visible = True
OptEditar.Visible = True
OptEliminar.Visible = True
OptInsertar.Value = False
OptEditar.Value = False
OptEliminar.Value = False
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
La rutina desactivada me da error en la linea For Each Clear In Sheets(1).Controls

En la hoja En curso, esta la exposicion

1 respuesta

Respuesta
1

Dim ctrl As Control
For Each ctrl In Sheets(1).Controls
If TypeOf ctrl Is TextBox Then
ctrl.Text = vbNullString
End If
Next

prueba con este código, esta sin probar, tal vez se pueda sustituir ctrl.text = vbnullstring por la instrucción

Ctrl. Clear

Hola Eduardo.

Pregunto si el código recomendado, SOLO actúa sobre TextBox

Si, la instrucción

if typeof ctrl is textbox then

Cumple esa funcion

Aunque haciendo el cambio como me sugietres, sigue dando error en la linea For Each ctrl In Sheets(1).Controls

Ese error viene dado porque no son controles agregados a un userform, sino integrados directamente en la hoja.

Utiliza este código, que ya lo he probado:

Dim shp As Shape
For Each shp In Hoja1.Shapes
If shp.Type = 12 And InStr(shp.Name, "TextBox") <> 0 Then
With Hoja1.OLEObjects(shp.Name).Object
.Text = vbNullString
End With
End If

Lo mencione en el libro:

Abrí el libro, le desactive las lineas TODAS referentes a TextBox.Text = "" quedo solo el restante código.

Se entiende que no tiene código para limpiar los TextBox

Fuy al tablero (hoja1) y seleccione uno para Eliminar, le di a Limpiar y limpio todo dejando todos con los títulos de la hoja2 cada cual con su respectivo titulo en los TextBox y Combo Box, ¿porque será? si no existe código para limpiar los TextBox?.

Cerré el libro y volví a abrirlo SIN CÓDIGO y lo mismo sucede

Entonces le agregue tu código, y hizo lo mismo coloca los títulos de la hoja2 no quedan en blanco.

Repito: será que mi excel esta fallando?

Me falto decirte algo; no me dá error con este codigo

Se me olvido la instrucción Next en el código, que debería estar la ultima

Enviame de nuevo el libro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas