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

#6 Antonio
27/03/2006 - 19:10 | Informe spam
Pues no se que era, pero lo he repasado todo he mirado los nombres y ahora
funciona ok.

Abusando un poco de ti, en el buen sentido, como podria anadir al codigo
alguna linea para que despues dehacer el borrado se posicionase en la celda
A1 de la hoja Datos y en la celda d3 de la hoja defectos.

Saludos y gracias por ayudar a un novato.

"KL" escribio en el mensaje
news:%
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
#7 KL
27/03/2006 - 19:51 | Informe spam
Hola Antonio,

como podria anadir al codigo
alguna linea para que despues dehacer el borrado se posicionase en la celda
A1 de la hoja Datos y en la celda d3 de la hoja defectos.



Tal vez asi:

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

Saludos,
KL
Respuesta Responder a este mensaje
#8 Antonio
28/03/2006 - 10:06 | Informe spam
Muchas gracias por tu colaboracion, ya me funciona todo como queria.

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

como podria anadir al codigo
alguna linea para que despues dehacer el borrado se posicionase en la
celda
A1 de la hoja Datos y en la celda d3 de la hoja defectos.



Tal vez asi:

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

Saludos,
KL
Respuesta Responder a este mensaje
#9 Antonio
28/03/2006 - 10:24 | Informe spam
Perdona una cosa mas que me he dado cuenta ahora. Al terminar el ultimo
codigo que me envias siempre se queda como hoja activa "DEFECTOS", como lo
hago para que sea siempre la activa "DATOS".

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

como podria anadir al codigo
alguna linea para que despues dehacer el borrado se posicionase en la
celda
A1 de la hoja Datos y en la celda d3 de la hoja defectos.



Tal vez asi:

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

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

como lo
hago para que sea siempre la activa "DATOS".



A ver asi:

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

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