Codigo para borra celdas no bloqueadas

25/03/2006 - 10:22 por Antonio | Informe spam
No se como hacer que al pulsar eun boton se borre el contenido de las celdas
no bloqueadas de varias hojas que estan protegidas. AYUDA

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
25/03/2006 - 19:29 | Informe spam
hola, Antonio !

... como hacer que al pulsar eun boton se borre el contenido de las celdas no bloqueadas de varias hojas que estan protegidas.



prueba ajustando/adaptando/modificando/... un codigo +/- como el siguiente [macro asignada 'al boton']...
Sub Borrar_desbloqueadas()
Application.ScreenUpdating = False
Dim Hoja As Worksheet, Celda As Range
For Each Hoja In Worksheets(Array("hoja1", "hoja5", "hoja6", "hoja9"))
For Each Celda In Hoja.UsedRange
If Not Celda.Locked Then Celda.ClearContents
Next
Next
End Sub

hay 'alternativas' para seleccionar 'celdas especiales' [dentro del UsedRange]
ClearContents SOLO 'borra' el contenido de la/s celda/s [los formatos 'persisten']

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Antonio
27/03/2006 - 10:54 | Informe spam
Hola Hector he puesto:

Sub NuevoCertificado_AlHacerClic()

Application.ScreenUpdating = False
Dim Hoja As Worksheet, Celda As Range
For Each Hoja In Worksheets(Array("Datos", "Defectos"))
For Each Celda In Hoja.UsedRange("A1:L54")
If Not Celda.Locked Then Celda.ClearContents
Next
Next

End Sub

y me da mensaje de error 9 en tiempo de ejecucion:
subindice fuera del intervalo.

No se que puede ser.
Respuesta Responder a este mensaje
#3 KL
27/03/2006 - 11:10 | Informe spam
Hola Antonio,

Sub NuevoCertificado_AlHacerClic()
Application.ScreenUpdating = False
Dim Hoja As Worksheet, Celda As Range
For Each Hoja In Worksheets(Array("Datos", "Defectos"))
For Each Celda In Hoja.UsedRange("A1:L54")
If Not Celda.Locked Then Celda.ClearContents
Next
Next
End Sub



1) Si te da ese error es que en tu libro no existen hojas con el nombre "Datos" o/ni "Defectos"

2) Otro problema que tiene tu codigo es "UsedRange("A1:L54")".
- UsedRange es un objeto que devuelve el rango usado de la hoja y no tiene argumentos, o sea que deberia usarse asi: Hoja.UsedRange.
- Si quieres limitar la zona de borrado a la interseccion del rango usado con el rango "A1:L54" usa:
For Each Celda In Intersect(Hoja.UsedRange, Hoja.Range("A1:L54"))
- Si quieres que el borrado se realice en el rango "A1:L54" entonces:
For Each Celda In Hoja.Range("A1:L54"))

Saludos,
KL
Respuesta Responder a este mensaje
#4 Antonio
27/03/2006 - 17:10 | Informe spam
SI que existen las hojas.


"KL" escribio en el mensaje
news:%
Hola Antonio,

Sub NuevoCertificado_AlHacerClic()
Application.ScreenUpdating = False
Dim Hoja As Worksheet, Celda As Range
For Each Hoja In Worksheets(Array("Datos", "Defectos"))
For Each Celda In Hoja.UsedRange("A1:L54")
If Not Celda.Locked Then Celda.ClearContents
Next
Next
End Sub



1) Si te da ese error es que en tu libro no existen hojas con el nombre
"Datos" o/ni "Defectos"

2) Otro problema que tiene tu codigo es "UsedRange("A1:L54")".
- UsedRange es un objeto que devuelve el rango usado de la hoja y no tiene
argumentos, o sea que deberia usarse asi: Hoja.UsedRange.
- Si quieres limitar la zona de borrado a la interseccion del rango usado
con el rango "A1:L54" usa:
For Each Celda In Intersect(Hoja.UsedRange, Hoja.Range("A1:L54"))
- Si quieres que el borrado se realice en el rango "A1:L54" entonces:
For Each Celda In Hoja.Range("A1:L54"))

Saludos,
KL
Respuesta Responder a este mensaje
#5 KL
27/03/2006 - 18:32 | Informe spam
Hola Antonio,

Tengo que insistir: una cosa es que existan y otra es que tu creas que existen. Comprueba dos cosas:

1) que los nombres sean identicos (presta atencion a caracteres in- o poco visibles como p.ej. espacios, acentos, enes etc.) La mejor forma es copiando los nombres desde las pestanas de hojas directamente al codigo.

2) que los nombres que usas no sean los CodeName (nombres que solo se asignan a hojas desde Editor VBA o macros)

Saludos,
KL


"Antonio" wrote in message news:
SI que existen las hojas.


"KL" escribio en el mensaje
news:%
Hola Antonio,

Sub NuevoCertificado_AlHacerClic()
Application.ScreenUpdating = False
Dim Hoja As Worksheet, Celda As Range
For Each Hoja In Worksheets(Array("Datos", "Defectos"))
For Each Celda In Hoja.UsedRange("A1:L54")
If Not Celda.Locked Then Celda.ClearContents
Next
Next
End Sub



1) Si te da ese error es que en tu libro no existen hojas con el nombre
"Datos" o/ni "Defectos"

2) Otro problema que tiene tu codigo es "UsedRange("A1:L54")".
- UsedRange es un objeto que devuelve el rango usado de la hoja y no tiene
argumentos, o sea que deberia usarse asi: Hoja.UsedRange.
- Si quieres limitar la zona de borrado a la interseccion del rango usado
con el rango "A1:L54" usa:
For Each Celda In Intersect(Hoja.UsedRange, Hoja.Range("A1:L54"))
- Si quieres que el borrado se realice en el rango "A1:L54" entonces:
For Each Celda In Hoja.Range("A1:L54"))

Saludos,
KL



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida