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