Bloquear una casilla o no dependiendo del valor de otr

Tengo que proteger contra escritura una casilla en función del valor de otra, por ejemplo si mi casilla A1 vale "dital" la casilla B1 debe bloquarse contra escritura. Sin embargo si mi casilla A1 vale Analógico B2 debe estar sin bloquear y en ella yo tomare un registro numérico.
Espero que puedas ayudarme, he estado probando con formato condicional y demás cosas pero no consigo nada,
-

1 Respuesta

Respuesta
1
Te envío un ejemplo de código, espero te sirva, pégalo en el editor VBA (Alt + F11)
Option Explicit
Public Const MSGTITULO As String = "Ejemplo de Aplicativo"
Public Const MSGERROR As String = "Hay un error"
Public Const ToPwd = "clave" 'Esta es la clave
Dim Mensaje As Variant 'Variable definida
Public Sub Bloqueo()
On Error GoTo Errores
If Range("A1") = "dital" Then
    Range("B1:B2").Select
    ActiveSheet.Unprotect ToPwd 'Desproteje hoja
    Selection.Locked = True  'Bloquear celda seleccionada
    Selection.FormulaHidden = False 'Ocultar la fórmula en la celda bloqueada: True, para sí; False, para no
    ActiveSheet.Protect ToPwd, DrawingObjects:=True, Contents:=True, Scenarios:=True 'bloquea la hoja
    Range("A1").Select 'selecciona la celda
End If
If Range("A1") = "Analogico" Then 'condición
    Range("B2").Select
    ActiveSheet.Unprotect ToPwd 'Desproteje hoja
    Selection.Locked = False 'Bloquear celda seleccionada
    Selection.FormulaHidden = False
    'Validación
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _
        Operator:=xlBetween, Formula1:="0", Formula2:="9999999" 'Solo acepta registros desde 0 hasta 9999999
        .IgnoreBlank = True 'ignore celdas vacias
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = "Error de datos"
        .InputMessage = ""
        .ErrorMessage = "Sólo puede insertar datos numéricos"
        .ShowInput = True
        .ShowError = True 'Muestra error
    End With
  ActiveSheet.Protect ToPwd, DrawingObjects:=True, Contents:=True, Scenarios:=True 'bloquea la hoja
  Range("A1").Select 'celecciona la celda
  End If
Errores:
    'Mensaje = MsgBox(MSGERROR, vbCritical, MSGTITULO)
End Sub
Insertas un botón o un cuadro y le asignas la macro. La ejecutas. La instrucción debe hacer exactamente lo que deseas
Ahora, puedes usar tu creatividad para hacerlo funcional.
Me comentas.
Frishmar
Muchísimas gracias, es justo lo que quería.no te imaginas la cantidad de tiempo que me has ahorrado.
i
Muchísimas gracias otra vez

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas