¿Puedo usar una macro para proteger una celda en una hoja de cálculo de Excel con una contraseña?

0

Tengo una hoja de cálculo de Excel configurada como un reloj de tiempo. El empleado abre su archivo de bloqueo de tiempo para la semana y llena la fecha de finalización de la semana en el lugar designado. De aquí en adelante, solo se usa el mouse para la entrada. El empleado selecciona la celda adecuada para el día de la semana y la acción de marcar, ir a almorzar, regresar del almuerzo e ir a casa. Después de colocar el cursor sobre la celda correcta, hacen clic en un botón (un botón vinculado a una macro) que llena la hora correcta para la acción. No puedo encontrar la manera de evitar que solo vayan a la celda que quieren y escriban el tiempo que quieran. Intenté agregar la protección de la celda con una contraseña como parte de la macro del botón, pero no he podido hacer que funcione. ¿Alguien tiene una manera de proteger las células para que el empleado no pueda alterar los tiempos? O, ¿hay una manera más fácil de hacer esto todos juntos?

Paul Y
fuente
Mi observación: 1. Parece que el archivo está en modo protegido y la Macro detrás permite que solo el mouse se mueva y haga clic en el botón. Ahora lo que está buscando es permitir que el usuario ingrese datos en las celdas y luego debe estar protegido.
Rajesh S
Cont ... La primera necesidad es compartir la macro que restringe el movimiento del puntero de la celda alrededor del archivo, y nos ayuda a comprender el proceso. Y sí, es posible que el usuario proteja los datos una vez ingresados. ☺
Rajesh S
Rajesh, gracias por tu respuesta. Para responder a su pregunta sobre la restricción del movimiento del puntero dentro de la hoja, las celdas a las que no quiero que vaya el usuario están protegidas y la protección evita que el usuario seleccione celdas bloqueadas. El usuario solo puede seleccionar las celdas que quiero que utilicen. Una vez que hayan ingresado la hora en una celda adecuada usando el botón para entrar, salir o lo que sea, no quiero que puedan volver a esa celda. De un solo uso, protegido después del primer uso. No quiero que el usuario proteja los datos, quiero que conserve el valor que obtuvo la primera vez.
Paul Y
cont ... Como ya ha trabajado con el área protegida, la siguiente necesidad es cómo restringir al usuario para editar los nuevos datos. Si cree que puedo sugerirle, Macro le ayudará a aplicar la protección a los datos ingresados. Solo confirma si lo necesitas a través de comentarios. ☺
Rajesh S
Rajesh, si puedes enviarme la macro, sin duda lo intentaré. Gracias
Paul Y

Respuestas:

0

Sus usuarios tienen acceso para escribir en el archivo de Excel ...

No creo que técnicamente se pueda hacer cumplir esto dentro de Excel; Creo que quieres un software alternativo. Aunque admiro tu habilidad con las macros de Excel.

Elaborar:

  • Si el usuario puede modificar la celda, entonces no está protegido del usuario simplemente modificando la celda por su cuenta (escribiendo un valor).
  • Si el usuario no puede modificar la celda, entonces está protegido del usuario que solo escribe un valor, pero tampoco puede hacer que se escriba la información correcta desde una macro.

Esto es distinto del cifrado de celdas, lo que impide incluso leer sin la contraseña.

Creo que hay una gran cantidad de software de tarjeta de tiempo por ahí, y la mayoría de ellos probablemente puede exportar los datos recopilados a Excel. Ampliaría mis horizontes más allá de las hojas de cálculo si estuviera en su posición.

Slartibartfast
fuente
0

Puede rechazar los cambios a las celdas mediante un controlador de eventos VBA:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    With Target
        If If Not Intersect(Target, Range("A1:B10")) Is Nothing Then Application.Undo
    End With
    Application.EnableEvents = True
End Sub

No sé si establecer el valor de las celdas a través de una macro VBA causa este evento para disparar. Sé que no se dispara por los cambios inducidos por las fórmulas. Pero puede definir fácilmente una variable global para permitir que se establezcan cambios Antes de cambiar la celda y desarmarla después.

También podrías tratar de atrapar Worksheet_SelectionChange evento, para prevenir el Usuario de posicionar el cursor dentro de la celda. Usted puede por el desestimado las celdas vuelven a colocar el cursor en alguna celda predefinida (como A1), o escriba un código más complicado para recordar la última posición permitida del cursor y reposicionarlo.

harrymc
fuente
hrrymc, gracias por tu respuesta. Estás hablando sobre mi cabeza. ¿Puedo cortar y pegar eso en una macro e intentarlo después de cambiar el rango para que se ajuste a mis necesidades?
Paul Y
Probablemente debería funcionar. Recomiendo estudiar el tema: VBA en realidad no es muy complicado, excepto por alguna sintaxis fea. Echa un vistazo a la tutoriales de excel-easy , especialmente en "Crear una macro" y "Eventos". Hay muchas otras publicaciones disponibles en Internet, por lo que puede buscar preguntas específicas, o si no las encuentra, vuelva a nuestro sitio.
harrymc