Macro condicional

Necesito ayuda para generar una macro que actúe al registrarse la fecha en una celda, y en función del valor de esta celda, otro rango de celdas se bloquee.

1 respuesta

Respuesta
1
Si me dices los rangos te paso el código si lo prefieres mandame tu archivo
d2enrique arroba .com
Hola Enrique. Gracias por responder tan rápido. Te cuento más detalles. Si A1=1, quiero bloquear Range("J116, J120, J124, J127, J128, J132:J144"). Select
    Range("J132").Activate
Saludos,
Sebas
Lo que pides es esto si el dato que introduces en A1 sale de una fórmula
Private Sub Worksheet_Calculate()
If Range("A1").Value = 1 Then
Cells.Select
    ActiveSheet.Unprotect
    Selection.Locked = False
    Selection.FormulaHidden = False
Range("J116,J120,J124,J127,J128,J132:J144").Select
Selection.Locked = True
    Selection.FormulaHidden = False
   Range("J132").Activate
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End Sub
Si el dato lo introduces directamente en A1 seria este otro codigo
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$1" And Target.Value = 1 Then
Cells.Select
    ActiveSheet.Unprotect
    Selection.Locked = False
    Selection.FormulaHidden = False
Range("J116,J120,J124,J127,J128,J132:J144").Select
Selection.Locked = True
   Selection.FormulaHidden = False
   Range("J132").Activate
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End Sub
Este código lo has de introducir en el código de la hoja si no sabes como dímelo y te lo explico
Estimado Experto: Otra consulta. Como hacer para que solo ejecute el condicional únicamente cuando ocurre un cambio en el valor de A1.
Ahora, cada vez que hago una modificación en los valores de cualquier celda, el programa ejecuta el condicional y esto hace muy lenta el trabajo con la hoja de cálculo.
Desde ya muchas gracias.
Saludos,
Sebas
Estoy en el trabajo cuando llegue ha casa verifico lo que me dices creí que solo se ejecutaba en A1
Por favor dime que código usas el change o el calculate
Solo copie y pegue el programa que me pasaste. Creo que es calculate.
Saludos,
Si la celda A1 es una fórmula no hay manera de que al existir en otras celdas más fórmulas no se ejecute al cambiar otras fórmulas
Si es ese el caso se puede hacer pero dime las celdas que modificas para que esa fórmula se calcule entonces utilizaríamos el rango de esas celdas para ejecutar el código
solo con que cambies en este código $A$1 por la celda que cambias ya te debe funcionar
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$1" And Target.Value = 1 Then
Cells.Select
    ActiveSheet.Unprotect
    Selection.Locked = False
    Selection.FormulaHidden = False
Range("J116,J120,J124,J127,J128,J132:J144").Select
Selection.Locked = True
   Selection.FormulaHidden = False
   Range("J132").Activate
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End Sub
Pruébalo y ya me cuentas
Estimado Experto: No funcionó con este cambio de código. Voy a dejar el código anterior, pero quería que me ayudes a ver como hago para que este rango de celdas no quede bloqueado cuando A1 es diferente de 1.
Gracias
Saludos,
Sebas
Pásame tu correo y te mado un ejemplo si lo prefieres mandame tu archivo y lo adapto
d2enrique arroba hotmail.com
Hola: Te envié un e-mail para que me puedas dar un ejemplo. Gracias
Disculpa pero no recibí ningún e-mail
Volví a enviarte el e-mail. No se que pudo haber pasado con el anterior.
Gracias por la ayuda.
Saludos,
Te envíe el archivo con las explicaciones ya me cuentas si te vale

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas