Hola,
Tengo una hoja con 43 columnas y filas que van aumentando conforme meto datos.
Tengo una macro que va almacenando esos datos, y me gustaría que a la vez que almaceno los datos se me bloquee la fila donde acabo de introducir los datos -50.(Se que seria meter la macro de bloquear en el de almacenar datos, pero no se como desarrollar la macro de bloquear celdas).
Es decir si almaceno datos y es la fila numero 150, que se me bloquee la numero 100.
Todo esto es para que cuando almacene le de cierto tiempo para poder corregir los datos almacenados en caso de error. Por ejemplo, ha metido la 150 y quiere corregir la 145.
También necesitaría una macro que fuese para desproteger todo(por si ocurre algo...). Eso no se si hay que darle directamente a desproteger hoja o como.
Muchas gracias.
Lo primero a tener en cuenta es que el bloqueo no es celda a celda, sino que lo que se bloquea es la hoja completa, así que tendrás que ir desbloqueando y bloqueando la hoja
esto se hace con los métodos Protect y Unprotect de la hoja
por ejemplo:
ActiveSheet.Protect 'esto protegería sin contraseña
Por defecto, las celdas se encuentran bloqueadas, cuando la hoja está desprotegida, no afecta, pero al proteger la hoja el que estén protegidas quiere decir que no se puede modificar su contenido.
Qué quiero decir con esto, que el planteamiento es al revés, tienes que desbloquear primero todo lo que quieras permitir que el usuario pueda modificar, las celdas donde pueda escribir. Esto lo puedes hacer a mano para toda la hoja, si quieres que puedan escribir en cualquier sitio (esto está en el formato de las celdas, pestaña Proteger (desmarca la casilla "Bloqueada").
luego protege la hoja, y déjala protegida (con el botón secundario del ratón en la pestaña con el nombre de la hoja en la parte inferior tienes las opciones para proteger la hoja).
Así que lo que tendrá que hacer tu macro es:
-Desproteger la hoja (con .Unprotect)
-localizar las filas que te interesen y Bloquearlas (el bloqueo/desbloqueo de un rango es su propiedad .Locked, así que puedes hacerlo con ElRangoQueTeInterese.Locked = True
-Volver a proteger la hoja (con .Protect)
------
Ya sé Excel, pero necesito más.