¿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
[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
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.
Creo que puedo utilizar este código que inicialmente me enviaste y me funciona para lo que estaba buscando:
- Compartir respuesta
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
- Compartir respuesta