¿Agregar a un código de VBA para borrar otra hoja?

Tengo el siguiente código en un modulo:

Sub borrar()

Sheets("BASE DE DATOS HOY").Activate

Set datos = Sheets("BASE DE DATOS HOY").UsedRange

With datos

    filas = .Rows.Count:  columnas = .Columns.Count

    .Rows(2).Resize(filas, columnas).Clear

End With

Set datos = Nothing

End Sub

Y el siguiente código en un boton:

Private Sub CommandButton1_Click()

'Borrar toda la hoja

nombre = ActiveSheet.Name

Sheets("BASE DE DATOS HOY").Cells.Clear

Call borrar

MsgBox "Datos borrados", vbInformation, "PASO 1 TERMINADO"

Sheets(nombre).Select

End Sub

Quiero adicionarle que me ayude a borrar otra base de datos llamada INFORME a partir de A2 hacia abajo. ¿Cómo lo puedo realizar?.

2 respuestas

Respuesta
1

[Hola

Tienes bastante código innecesario ahí, y no olvidar que no es necesario activar o seleccionar las hojas y/o rangos para eliminarlos o borrar su contenido. En todo caso, ¿los rango de las hojas son continuos o no continuos?

Abraham Valencia

Este código me funciona para borrar la hoja 3 llamada "BASE DE DATOS HOY", pero también deseo que me borre la hoja 4 llamada "INFORME" a partir de la A2, ya que tengo un encabezado prederteminado. De resto que me borre toda la hoja a partir de A2

Si teóricamente los encabezados están en la fila 1 y quieres borrar todo lo demás y no esa fila, entonces podrías usar algo así:

Dim Ultimacelda As String
Ultimacelda = Sheets("Hoja2").Range("A2").SpecialCells(xlLastCell).Address
Sheets("Hoja2").Range("A2:" & Ultimacelda). ClearContents

Obviamente solo debes cambiar el nombre de la hoja y puedes repetir el proceso, en la misma macro, más de una vez dependiendo de las hojas a borrar, claro, mejor es con matrices pero creo que sería, al menos por ahora, complicarte.

Abraham Valencia

Agrego un nuevo modulo así

Luego voy donde tengo el boton y me genera el siguiente error:

Entiendo que quieres usar macros (VBA) aparentemente tienes apuro al hacerlo, pero recomiendo comenzar leyendo desde lo básico, estás cometiendo (en esta y otras preguntas) errores de concepto. Asimismo, y como ya te comenté en otro mensaje, es malo solo copiar/pegar, lo importante es entender lo que se envía.

Lo que yo te he enviado es una rutina que hace todo lo que necesitas (para una hoja en ese caso) puedes, por ejemplo asignarla a un botón de formulario (directamente) o en todo caso "llamarla" desde un botón ActiveX sin necesidad de todo lo demás que usabas (que en realidad era bastante innecesario).

Eso.

Abraham Valencia

Si soy principiante en el tema y trato de aprender a través de foros. Si de pronto tienes material de estudio te lo agradecería. En este caso me toca un poco más de tiempo hacer el código y por eso lo estaba trabajando de esa manera. Inserte el código en un modulo y al llamarlo a través del botón me genero el error. Me podrías colaborar a despejar la duda para yo poder hallar el error

En mi blog tengo manuales, sobre todo, básicos:

https://abrahamexcel.blogspot.com/

En el evento click de tu botón, borra todo y deja solo esto:

Call Borrar

Saludos]

Abraham Valencia

Que pena la ignorancia, pero teniendo en cuenta lo que ya había construido, lo que me enviaste . No logro unificarlo para que me de el resultado

Poco a poco se aprende, la cuestión es leer y leer.

Borra todo lo que has hecho y en el evento click de tu botón solo deja el código que envié.

Abraham Valencia

Elimine el código que había construido y lo empecé a hacer de esta manera:

Colocando el código que me habías enviado, directamente en el botón pero me genera un error. Deseo borrar toda la Hoja 2 llamada "BASE DE DATOS HOY" y Hoja 3 llamada "INFORME", esta ultima a partir de la Fila 2 ya que tengo unos encabezados que no quiero borrar.

Las variables se declaran una única vez, si el botón no lleva exactamente ese nombre también dará ese error, si has usado el evento click dos veces también error, etc. Aquí en Perú es feriado, coloca tu archivo en un Drive y me doy un tiempo.

Abraham Valencia

PD: En otra pregunta igual está pendiente eso, por favor hacerlo o me seguirá saliendo el aviso je je je

https://www.dropbox.com/s/h9iytlucyh9w547/MACRO%20DIPLOMATICOS%20ULTIMO%20ULTIMO.xlsm?dl=0 

Este es el archivo en la nube, esta en blanco para el ejercicio. El botón 1 esta en el menu y es el encargado de borrar las hojas, en este momento solo me borra la base de datos hoy, también deseo borrar la de informe a partir de la fila 2. Esto presionando el mismo botón.

No he podido lograr que me borre la otra hoja de INFORME a partir de la fila 2. Lo del modulo esta en el numero 1. Solo es esto, lo demás son otras actividades que están ahí guardadas

[Hola nuevamente

Deja así el botón:

Private Sub CommandButton1_Click()
Dim UltimaFila As Long
Let UltimaFila = Sheets("Informe").Cells(Rows.Count, 7).End(xlUp).Row
Sheets("Informe").Range("A2:G" & UltimaFila).ClearContents
End Sub

OJO, el proceso se repite para la otra hoja (sin declarar la variable otra vez) pero reemplazando el 7 y la G (G es la columna 7), yo no sé cuál es en tu hoja "Base de datos hoy..." ya que está completamente vacía, no dejaste ni el encabezado para guiarte PLOP.

Por cierto, estás cometiendo un error al dar formato (bordes, alineamiento, etc.) a celdas que no usas, por eso he cambiado el código que te recomiendo.

Abraham Valencia

Si que pena no fui tan clara, lo que deseo hacer es lo siguiente: borrar toda la hoja 3 llamada BASE DE DATOS HOY; adicionalmente borrar la hoja 4 llamada INFORME a partir de la fila 2 por eso le deje el encabezado.

La hoja 3 llamada BASE DE DATOS HOY esta en blanco porque esa se borra toda

Realice la prueba del botón pero solo me borra la fila 2 de la hoja Informe. Voy a explicar un poco más detallado para que me puedas ayudar a guiarme.

Borrar toda la HOJA 3 = BASE DE DATOS HOY (Borrar toda la información y que toda la hoja quede en blanco como una nueva. Esto porque cada día se pega una base de datos nueva, en el ejemplo la deje en blanco ).

Borrar toda la HOJA 4 = INFORME (A partir de la fila 2 hasta infinito, esto porque siempre dejo en encabezado que voy a utilizar )

Mil Gracias

Me quedo de esta manera:

Pero solo me borra la fila 2 de base de la hoja 3 y 4, como puedo expandirlo para que me borre hacia abajo, hasta lo ultimo

Tal cual has dejado, borra el contenido de todo lo escrito en la hoja "Informe", si tú deseas ELIMINAR (que no es igual que borrar) en lugar de "ClearContents", deja solo "Clear". En el caso de la hoja "Base de...", OJO, por eso mencioné lo G=7, tienes que colocar la última columna de esa hoja, es decir, si es H, cambias el 7 por un 8 y la G por la H; si es F, cambias el 7 por un 6 y la G por la F ¿se entendió?

Abraham Valencia

La parte de las filas la entendí que G corresponde a 7 y se puede cambiar hasta Z o hasta donde necesite. Lo que no logre ubicar es borrar las columnas.

Me quedo de la siguiente manera de acuerdo a tu explicación:

Al ejecutarlo solo me borra la fila 2 hasta donde esta el rango, en el caso de G =7 Y AA=27. Pero también deseo borrar hacia abajo, las columnas también. ¿Cómo lo puedo agregar?

Me quedan dudas porque inicialmente se entendía que querías mantener los encabezados ¿entonces ya no? De ser "no", solo cambia el A2 por A1.

Abraham Valencia

De la Hoja 3 quiero borrar todo y que quede como una hoja nueva.

De la Hoja 4 quiero borrar todo (menos encabezados que están de A1 A G1, de resto borrar absolutamente todo.

Para la de todo, pon A1, para la de mantener encabezados, coloca A2.

Abraham Valencia

Creo que puedo utilizar este código que inicialmente me enviaste y me funciona para lo que estaba buscando:

Usa lo que más te convenga.

Saludos]

Abraham Valencia

Abraham mil gracias por compartir tu conocimiento y la paciencia. Me gustaría aprender un poco más de ti 

En mi blog trato de escribir al menos tres veces al mes, hay desde cosas avanzadas con macros, hasta básicas también con macros y bastantes cosas interesantes solo usando herramientas propias del Excel.

Abraham Valencia

Respuesta
1

Otra macro para eliminar filas con datos, por si le es de utilidad, Saludos

Sub EliminarFilas() 'elimina filas con datos
Worksheets("INFORME").Select
    Range("A2").Select
    While ActiveCell.Value <> ""
        If ActiveCell.Value <> "" Then
            ActiveCell.EntireRow.Delete
        Else
            ActiveCell.Offset(1, 0).Activate
        End If
    Wend
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas