Limpiar base de datos (usando VBA) configurada como "Lista"

19/05/2010 - 18:55 por ElProfe | Informe spam
Hola todo en el foro:

Esta vez mi visita tiene que ver con la manera de borrar (o limpiar)
con código VBA, una base de datos que está configurada dentro de una
"Lista" (Datos-Lista-Crear lista de Excel 2003)

El asuto es así:
-La columna "A" no tiene nada (solo la uso para navegación vertical
con el cursor).
-Las filas 1 a 3 contienen datos varios de identificación.
-Los títulos de la base de datos (hoja Bd) están en la fila "4" (rango
B4:AL4).
-Los datos de la base se encuentran a partir de la celda B5 y se van
extendiendo verticalmente de manera indefinida dentro de una lista
(según necesidades de cada día).
-Al empezar cada semana, los datos de la base se resumen en un informe
y no se necesitan más, por lo que deben ser borrados para iniciar la
recolección de la nueva información por la semana que inicia.

La idea es que un boton, que está como menú en otra hoja, dispare una
macro que:
1) Vaya a la hoja Bd;
2) Localice la celda B5 (suponiendo que el cursor podría estar en
cualquier parte de la hoja);
3) Detecte (o establezca) el rango de datos existe para borrar;
4) Si no hay nada que borrar, con un mensaje informe "No hay datos
para borrar"
5) Si existen datos, los borre (como cuando se usa Borrar contenido
con la tecla Supr.) sin deshacer el formato de lista y sin "eliminar
filas" para no dañar los nombres de rangos asignados a las columnas.
6) Con un mensaje avise que el borrado fue exitoso.
Y listo!

Gracias por la ayuda y disculpen si me fui en detalles.

Saludos,

ElProfe
 

Leer las respuestas

#1 ElProfe
19/05/2010 - 21:06 | Informe spam
Hola todo en el foro:

Bueno doy alcance a mi nota anterior porque olvidé decirles que lo
estoy haciendo con el siguiente código, pero que no me parece lo
suficientemente técnico, aunque sobra decirlo, funciona muy bien. Me
gustaria mejorarlo.

El código es:

Sub InicioMes()
' Macro grabada por el ElProfe
Application.Goto Reference:="_Tit01" ' Voy a la
celda B4
ActiveSheet.ListObjects("Lista1").Unlist ' La
lista la vuelvo rango
Selection.SpecialCells(xlCellTypeLastCell).Select ' Selecciono
área de datos
Range("$IV$65536:$B$5").Select ' lo
bastante grande
Range("B5").Activate
Selection.ClearContents '
Suprimo el contenido
Application.Goto Reference:="R4C2" '
Selecciono celda B4
ActiveWindow.SmallScroll ToRight: ' Defino
área de datos
Range("B4:AL5").Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$B$4:$AL$5"), ,
xlYes).Name = _

"Lista1" '
Creo de nuevo la lista
Range("A1").Select
' Selecciono celda A1
End
Sub
' Finalizo y listo!

Estoy seguro que debe haber una forma muchisimo m ás técnica de
hacerlo. Ahi les dejo la inquietud.

Saludos,

ElProfe

Preguntas similares