Proteger una celda, pero permitir que funcione la lista desplegable

Proteger una celda, pero permitir que funcione la lista desplegable

Quiero proteger una celda en la que tengo una lista desplegable, pero aún quiero que la lista desplegable funcione.

Cuando intento protegerlo, el usuario no puede usar la lista desplegable para seleccionar otros elementos o macros.

Recibo este mensaje de error

"La celda o gráfico que está intentando cambiar está protegido y, por lo tanto, es de solo lectura. Para modificar una celda o gráfico protegido, primero elimine la protección usando el comando Hoja no protegida (pestaña Revisar, grupo Cambios). Es posible que se le solicite una contraseña ".

Respuesta1

El menú desplegable está adjunto a la celda. Ahí es donde almacena los datos. La validación garantizará que los datos son válidos.

Si aún no lo has hecho, asegúrate de que la celda no esté bloqueada. Haga clic derecho en la celda y haga clic en formatear celdas y luego vaya a la pestaña Protección. La casilla de verificación Bloqueado debe estar desmarcada.

Respuesta2

Creo que esta pregunta puede haber sido mal interpretada. Si es así, y si lo interpreto correctamente, aquí tienes una solución.

En realidad, Excel permite al usuario de una hoja de cálculo sobrescribir una celda que utiliza una lista de validación; Si la lista incluye los valores "Apple", "Melocotón" y "Naranja", la operación estándar permite al usuario escribir "Brócoli" en la celda si está desprotegida, como si no hubiera una lista de validación adjunta. Sin embargo, proteger la celda y la hoja de trabajo desactiva la capacidad de seleccionar un elemento de la lista de validación, y eso puede ser un problema.

Si ese es el problema, aquí tienes una solución:

1.  Format the cell using the validation list so it's 
    unprotected. 
2.  With the cursor positioned at that cell, open the 
    Validation menu origintally used to identify the validation 
    list. 
3.  On the Settings tab of the Data Validation window pane,
    be sure that "ignore blank" is unchecked, and 
    continue to leave that window pane open. 
4.  On the "Error alert" tab of the Data Validation window
    pane:  
      a) Be sure "Show error alert after invalid data is
         entered" is checked. 
      b) Select "Stop" under the "Style" heading.
      c) Give your error alert a name under "Title"; this 
         can be anything, but a short title is best. 
      d) Under "Error message", type a short message that you
         want to appear if a user tries to manually type a value
         in the cell - something like "Please use the drop-down
         menu provided to select a value for this cell."
      e) Click "OK". 

Eso impedirá que las personas ingresen lo que quieran en una celda destinada a utilizar la validación de datos, incluso si la hoja de trabajo no está protegida. Sin embargo, es posible que desee proteger la hoja de cálculo para evitar actualizaciones no deseadas en la lista de validación de datos.

Respuesta3

En mi computadora (PC con Excel 2010), la lista desplegable en sí parece estar adjunta a la celda inmediatamente a la derecha. Entonces, si quiero una lista desplegable en A7, tengo que desbloquear tanto A7 como B7.

Esto puede ser un error, pero es una solución relativamente sencilla.

Respuesta4

En hojas protegidas:

Pegue el siguiente enlace en el libro de trabajo

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim wsh As Variant
    For Each wsh In Worksheets(Array("Sheet1"))
        wsh.EnableOutlining = True
        wsh.Protect UserInterfaceOnly:=True, Password:="", _
            DrawingObjects:=False, _
    Contents:=True, _
    Scenarios:=True, _
    AllowFormattingCells:=False, _
    AllowFormattingColumns:=False, _
    AllowFormattingRows:=False, _
    AllowInsertingColumns:=False, _
    AllowInsertingRows:=False, _
    AllowInsertingHyperlinks:=False, _
    AllowDeletingColumns:=False, _
    AllowDeletingRows:=False, _
    AllowSorting:=False, _
    AllowFiltering:=False, _
    AllowUsingPivotTables:=False
    Next wsh

Dim Oldvalue As String
Dim Newvalue As String

On Error GoTo Exitsub
If Target.Address = "$C$2" Then 'As required
    If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
    GoTo Exitsub
    Else: If Target.Value = "" Then GoTo Exitsub Else
        Application.EnableEvents = False
        Newvalue = Target.Value
        Application.Undo
        Oldvalue = Target.Value
        If Oldvalue = "" Then
            Target.Value = Newvalue
        Else
            Target.Value = Oldvalue & ", " & Newvalue
        End If
    End If
End If


Exitsub:
Application.EnableEvents = True

End Sub

información relacionada