2010-08-24 13 views

Respuesta

5

Depende de cómo desee seleccionar el rango. Esta es solo una celda. Si vuelve a J1 y cambia el valor, debe recibir un aviso.

Private Sub Worksheet_Change(ByVal Target As Range) 
    Range("J1").Select 
    Selection.Locked = True 
    ActiveSheet.Protect Contents:=True 
    Range("K1").Select 

End Sub 

Las celdas no están bloqueadas hasta que la hoja de trabajo esté protegida. De forma predeterminada, todas las celdas están configuradas como Bloqueadas, por lo que deberá desbloquear las celdas que desea que los usuarios puedan cambiar.

+0

Si quiero hacer que esto funcione para un eg de células sonoras, ¿Cómo puedo hacer eso?. Por mi falta de conocimiento, soy nuevo en la programación. – gizgok

+0

Rango ("A1: K47") – JeffO

+0

Esto hace que todas las celdas sean de solo lectura ... Estoy cometiendo un error. Private Sub Worksheet_Change (CellRange como secuencia) Rango (CellRange) .Elija Selection.Locked = True Contenido ActiveSheet.Protect: = True End Sub – gizgok

0

This page ofrece un pequeño sub para proteger un rango de celdas.

Extracto

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If Not Intersect(Target, Range("H1:H10")) Is Nothing Then 
     Target.Offset(0, 1).Select 
     MsgBox "you may not enter that cell" 
    End If 
End Sub 

Para proteger H1:H10. Cuando el usuario desea cambiar una celda dentro de H1:H10, un mensaje de advertencia dice que la celda no se puede modificar y, en su lugar, se selecciona la celda vecina en la siguiente columna (I).

+0

Bastante seguro de que esta no es una respuesta adecuada – titus

0

En Excel puede ir al menú de Protección y especificar qué celdas requieren una contraseña para modificar. Puede especificar múltiples rangos también.

Espero que esto es lo que estabas buscando.

1

Puede intentar proteger las celdas. O puede codificarlo usted mismo utilizando un evento de selector SelectionChange ...:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
     If Not Intersect(Selection, Range("A24:A50")) Is Nothing Then 
     Range("B1").Select 
     End If 
    End Sub 
4

En estas circunstancias a menudo encontrar la mejor manera es para bloquear la hoja, pero sólo para el usuario con el argumento UserInterfaceOnly que todavía permite la interacción programática sin restricciones con la hoja.

ActiveSheet.ProtectUser InterfaceOnly:=True 

Hay varios otros argumentos que se pueden establecer que todavía permite al usuario filtrar, ordenar, etc. si esto fuera necesario, el archivo de ayuda tiene una lista completa.

Cuestiones relacionadas