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 de frishmar
1
1
frishmar, Lic. Humanidades Lengua Castellana. Habilidades en Ofimatica con...
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