Desbloquear una celda en VBA

Resuelto
Anthelm Mensajes publicados 202 Estado Miembro -  
Anthelm Mensajes publicados 202 Estado Miembro -
Hola,
tengo una hoja bloqueada que contiene una celda con una función “Date”. Quiero hacer una macro que congele esta fecha reemplazándola por la fecha de hoy (así si abro el archivo al día siguiente, la fecha no cambia)

ActiveWorkbook.Sheets("Impression").Copy
Cells("G1").Locked = False
Range("G1") = Date

La segunda línea falla. He probado mil soluciones...

El problema es que antes de la macro, G1 esté bloqueada, y que ya no lo esté después de usar la macro (que antes, copia el documento)

¡Muchas gracias!

2 respuestas

  1. titeufdu89 Mensajes publicados 387 Estado Miembro 38
     
    Hola Anthelm,

    Dos cosas:
    - con la función "cells" se codifica la dirección de la celda en números (dirección de fila, dirección de columna), es decir, para seleccionar B1 con cells se codifica cells(1,2), mientras que si usas range se codifica: range("B1").

    - La función "locked" determina si una vez la hoja protegida la celda en cuestión estará protegida o no.
    Para poder modificar una celda en una macro cuando esté "locked = true" o "locked = false" basta desproteger la hoja al inicio del procedimiento y volver a protegerla al final del procedimiento.

    Aquí un ejemplo de código:
    ActiveSheet.Unprotect Range("G1") = Date
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

    A tester

    Jc
    2
    1. Anthelm Mensajes publicados 202 Estado Miembro 1
       
      Ah sí, me lo estaba proponiendo mal!

      - La función "locked" determina si una vez protegida la hoja, la celda en cuestión estará protegida o no.

      Sí, ¡muchas gracias! en 3 pasos, entonces, pero funciona muy bien :)
      0
  2. Vaucluse Mensajes publicados 27336 Fecha de registro   Estado Colaborador Última intervención   6 453
     
    Buenas noches
    intente con estas dos líneas en su macro:
    Range("G1").Locked = False
    Range("G1").Value = Date

    aunque para la primera línea, no parece necesario desbloquear la celda si la hoja no está protegida.
    Y no podrá desbloquearla sin quitar la protección
    ya sea al inicio de la macro:
    activesheet.unprotect
    y al final
    activesheet.protect

    crdlmnt
    1
    1. Anthelm Mensajes publicados 202 Estado Miembro 1
       
      Hola Vaucluse! me decidí por lo que Titeuf, ¡pero muchas gracias!
      0