Borrar celdas de distintas hojas

12/09/2007 - 14:10 por eusebiocastaneda | Informe spam
Buenas tardes a todos:

En primer lugar me gustaría agradecer la participación de todos en
este grupo, ya que con sus comentarios y dudas estoy aprendiendo mucho
sobre la programación en VBA y me sirve para aplicarlo a mi trabajo.

Actualmente estoy terminando un archivo Excel y me he quedado atascado
en el paso siguiente.

Tengo 5 hojas en el archivo, cada una con una serie de datos que se
tienen que introducir en unas celdas determinadas. En cada una de las
cuatro primeras he insertado un botón que guarda los datos insertados
en una línea de la Hoja5.

Para que sea más fácil de entender cada una de las 4 primeras hojas
sería como una especie de formulario de base de datos y la Hoja5 sería
la tabla con toda la información, donde se guardan por orden todos los
registros.

Una vez realizado todo esto me gustaría insertar otro botón en la
Hoja4 que me permita poner en blanco todas las celdas donde se han de
meter datos de las 4 primeras hojas, me oculte las hojas 2, 3 y 4 (a
la 5, la de la tabla sólo se accede mediante una clave) y me remita a
la primera celda de la Hoja1 donde puedo introducir datos.

La macro que he usado, es la siguiente. (Todas las celdas que aparecen
en la macro son las que contendrían los datos que me gustaría que se
borrasen para poder seguir introduciendo nuevos datos, un "nuevo
registro")

Private Sub CommandButton4_Click()

Sheets("Hoja4")
Range("B9:L9").Select
Selection.ClearContents
Range("B12:L12").Select
Selection.ClearContents
Range("B14:L19").Select
Selection.ClearContents
Range("J34").Select
Selection.ClearContents

Sheets("Hoja3").Select
Range("H17:I34").Select
Selection.ClearContents
Range("K17:K34").Select
Selection.ClearContents

Sheets("Hoja2").Select
Range("H19:I21").Select
Selection.ClearContents
Range("L19:O21").Select
Selection.ClearContents
Range("H23:I25").Select
Selection.ClearContents
Range("L23:O25").Select
Selection.ClearContents
Range("H27:I28").Select
Selection.ClearContents
Range("L27:O28").Select
Selection.ClearContents

Sheets("Hoja1").Select
Selection.ClearContents
Range("E24:K24").Select
Selection.ClearContents
Range("E27:K27").Select
Selection.ClearContents
Range("E30:K30").Select
Selection.ClearContents
Range("E34:K34").Select
Selection.ClearContents
Range("E43:F43").Select
Selection.ClearContents
Range("I43:J43").Select
Selection.ClearContents

Sheets("Hoja4").Protect Password:="clave", DrawingObjects:=True,
Contents:=True, Scenarios:=True
ActiveWindow.SelectedSheets.Visible = False

Sheets("Hoja3").Protect Password:="clave", DrawingObjects:=True,
Contents:=True, Scenarios:=True
ActiveWindow.SelectedSheets.Visible = False

Sheets("Hoja2").Protect Password:="clave", DrawingObjects:=True,
Contents:=True, Scenarios:=True
ActiveWindow.SelectedSheets.Visible = False

Sheets("Hoja1").Unprotect Password:="clave"
Sheets("Hoja1").Select
Sheets("Hoja1").Visible = True
Sheets("Hoja1").Protect Password:="clave", DrawingObjects:=True,
Contents:=True, Scenarios:=True
Sheets("Hoja1").Range("E21").Select

End Sub


El problema de esta macro es que sólo me borra los datos de las celdas
seleccionadas de la Hoja4.

Es decir, lo que no me funciona es lo siguiente:

Sheets("Hoja3").Select
Range("H17:I34").Select
Selection.ClearContents
Range("K17:K34").Select
Selection.ClearContents

Sheets("Hoja2").Select
Range("H19:I21").Select
Selection.ClearContents
Range("L19:O21").Select
Selection.ClearContents
Range("H23:I25").Select
Selection.ClearContents
Range("L23:O25").Select
Selection.ClearContents
Range("H27:I28").Select
Selection.ClearContents
Range("L27:O28").Select
Selection.ClearContents

Sheets("Hoja1").Select
Selection.ClearContents
Range("E24:K24").Select
Selection.ClearContents
Range("E27:K27").Select
Selection.ClearContents
Range("E30:K30").Select
Selection.ClearContents
Range("E34:K34").Select
Selection.ClearContents
Range("E43:F43").Select
Selection.ClearContents
Range("I43:J43").Select
Selection.ClearContents

Supongo que será algo relativamente fácil, pero soy bastante
principiante en este mundo de la programación y después de muchísimas
vueltas no logro conseguir que funcione.

Les agradecería cualquier sugerencia.

Muchas gracias por anticipado.

Eusebio Castañeda
 

Leer las respuestas

#1 Juan M
12/09/2007 - 16:29 | Informe spam
Hola Eusebio,

Un comentario, en porcentaje muy alto no es necesario seleccionar las hojas,
ni los rangos.

Para lo que tu quieres te valdría poner

worksheets("Hoja1").range("E24:K24","E27:K27",.).ClearContents

Los puntos suspensivos los sustitures por el resto de tus rangos.

Un saludo,
Juan


Mensaje original





escribió
Buenas tardes a todos:

En primer lugar me gustaría agradecer la participación de todos en
este grupo, ya que con sus comentarios y dudas estoy aprendiendo mucho
sobre la programación en VBA y me sirve para aplicarlo a mi trabajo.

Actualmente estoy terminando un archivo Excel y me he quedado atascado
en el paso siguiente.

Tengo 5 hojas en el archivo, cada una con una serie de datos que se
tienen que introducir en unas celdas determinadas. En cada una de las
cuatro primeras he insertado un botón que guarda los datos insertados
en una línea de la Hoja5.

Para que sea más fácil de entender cada una de las 4 primeras hojas
sería como una especie de formulario de base de datos y la Hoja5 sería
la tabla con toda la información, donde se guardan por orden todos los
registros.

Una vez realizado todo esto me gustaría insertar otro botón en la
Hoja4 que me permita poner en blanco todas las celdas donde se han de
meter datos de las 4 primeras hojas, me oculte las hojas 2, 3 y 4 (a
la 5, la de la tabla sólo se accede mediante una clave) y me remita a
la primera celda de la Hoja1 donde puedo introducir datos.

La macro que he usado, es la siguiente. (Todas las celdas que aparecen
en la macro son las que contendrían los datos que me gustaría que se
borrasen para poder seguir introduciendo nuevos datos, un "nuevo
registro")

Private Sub CommandButton4_Click()

Sheets("Hoja4")
Range("B9:L9").Select
Selection.ClearContents
Range("B12:L12").Select
Selection.ClearContents
Range("B14:L19").Select
Selection.ClearContents
Range("J34").Select
Selection.ClearContents

Sheets("Hoja3").Select
Range("H17:I34").Select
Selection.ClearContents
Range("K17:K34").Select
Selection.ClearContents

Sheets("Hoja2").Select
Range("H19:I21").Select
Selection.ClearContents
Range("L19:O21").Select
Selection.ClearContents
Range("H23:I25").Select
Selection.ClearContents
Range("L23:O25").Select
Selection.ClearContents
Range("H27:I28").Select
Selection.ClearContents
Range("L27:O28").Select
Selection.ClearContents

Sheets("Hoja1").Select
Selection.ClearContents
Range("E24:K24").Select
Selection.ClearContents
Range("E27:K27").Select
Selection.ClearContents
Range("E30:K30").Select
Selection.ClearContents
Range("E34:K34").Select
Selection.ClearContents
Range("E43:F43").Select
Selection.ClearContents
Range("I43:J43").Select
Selection.ClearContents

Sheets("Hoja4").Protect Password:="clave", DrawingObjects:=True,
Contents:=True, Scenarios:=True
ActiveWindow.SelectedSheets.Visible = False

Sheets("Hoja3").Protect Password:="clave", DrawingObjects:=True,
Contents:=True, Scenarios:=True
ActiveWindow.SelectedSheets.Visible = False

Sheets("Hoja2").Protect Password:="clave", DrawingObjects:=True,
Contents:=True, Scenarios:=True
ActiveWindow.SelectedSheets.Visible = False

Sheets("Hoja1").Unprotect Password:="clave"
Sheets("Hoja1").Select
Sheets("Hoja1").Visible = True
Sheets("Hoja1").Protect Password:="clave", DrawingObjects:=True,
Contents:=True, Scenarios:=True
Sheets("Hoja1").Range("E21").Select

End Sub


El problema de esta macro es que sólo me borra los datos de las celdas
seleccionadas de la Hoja4.

Es decir, lo que no me funciona es lo siguiente:

Sheets("Hoja3").Select
Range("H17:I34").Select
Selection.ClearContents
Range("K17:K34").Select
Selection.ClearContents

Sheets("Hoja2").Select
Range("H19:I21").Select
Selection.ClearContents
Range("L19:O21").Select
Selection.ClearContents
Range("H23:I25").Select
Selection.ClearContents
Range("L23:O25").Select
Selection.ClearContents
Range("H27:I28").Select
Selection.ClearContents
Range("L27:O28").Select
Selection.ClearContents

Sheets("Hoja1").Select
Selection.ClearContents
Range("E24:K24").Select
Selection.ClearContents
Range("E27:K27").Select
Selection.ClearContents
Range("E30:K30").Select
Selection.ClearContents
Range("E34:K34").Select
Selection.ClearContents
Range("E43:F43").Select
Selection.ClearContents
Range("I43:J43").Select
Selection.ClearContents

Supongo que será algo relativamente fácil, pero soy bastante
principiante en este mundo de la programación y después de muchísimas
vueltas no logro conseguir que funcione.

Les agradecería cualquier sugerencia.

Muchas gracias por anticipado.

Eusebio Castañeda

Preguntas similares