Hola a todos:
Hoy escribiré sobre cómo podemos automatizar la tarea de vaciar todos los combobox de nuestra hoja.
Dado que es un ejemplo sencillo no dejaré archivo, con el código es suficiente. Tan solo tenéis que copiarlo y pegarlo en un módulo estándar y realizar la prueba:
Sub VACIAR_COMBOS()
With ActiveSheet
'Por cada objeto que sea un combobox limpiamos contenido
For Each objeto In .OLEObjects
If objeto.OLEType = xlOLEControl Then
If TypeName(objeto.Object) = "ComboBox" Then
objeto.Object.Clear
End If
End If
Next
End With
End Sub
Como podéis ver, lo único que hacemos es pasar un «for – each» por todos los objetos de la hoja y cuando se trata del tipo especificado, limpia o vacía el contenido.
Es una macro sencilla y si tenéis aplicaciones que requieren vaciar todos los combos, podéis hacerlo muy rápido con este código.
Si tuviésemos listbox en lugar de combobox, solo tendréis que sustituir listbox por combobox en la macro:
Sub VACIAR_LISTBOX()
With ActiveSheet
'Por cada objeto que sea un listbox limpiamos contenido
For Each objeto In .OLEObjects
If objeto.OLEType = xlOLEControl Then
If TypeName(objeto.Object) = "ListBox" Then
objeto.Object.Clear
End If
End If
Next
End With
End Sub
Y ya para finalizar, si se tratase de TextBox, solo hemos de modificar el método de limpiar los datos:
Sub VACIAR_TEXTBOX()
With ActiveSheet
'Por cada objeto que sea un textbox limpiamos contenido
For Each objeto In .OLEObjects
If objeto.OLEType = xlOLEControl Then
If TypeName(objeto.Object) = "TextBox" Then
objeto.Object = ""
End If
End If
Next
End With
End Sub
Son pequeñas «pinceladas» que os pueden ser de mucha utilidad para hacer que vuestro código sea más corto y más eficiente.
Y eso es todo por hoy.
Saludos! 🙂