Steven debe asegurarse de que nadie ingrese información en una hoja de trabajo entre las 4:00 pm y las 6:30 pm todos los días. Se pregunta si es posible utilizar la Validación de datos para evitar que un usuario ingrese información en una hoja de trabajo durante un momento particular cada día.

Hay dos formas generales de hacerlo. Un enfoque es utilizar la validación de datos para verificar la hora y permitir o no permitir la entrada de datos.

  1. Seleccione todas las celdas de la hoja de trabajo.

  2. Muestre la pestaña Datos de la cinta.

  3. Haga clic en la herramienta Validación de datos en el grupo Herramientas de datos. Excel muestra el cuadro de diálogo Validación de datos. (Ver figura 1)

  4. Usando la lista desplegable Permitir, elija Personalizado.

  5. Ingrese lo siguiente en el cuadro Fórmula:

  6. Realice los cambios que desee en la pestaña Alerta de error.

  7. Haga clic en Aceptar.

El problema con este enfoque está en el primer paso: debe seleccionar todas las celdas en la hoja de trabajo para evitar que se ingresen datos en cualquiera de ellas. Además, si ya está utilizando Validación de datos en cualquiera de las celdas, este enfoque sobrescribirá esa configuración.

Por estas razones, puede ser mejor utilizar un enfoque basado en macros. Todos estos enfoques pueden utilizar controladores de eventos para verificar cualquier cambio. Lo siguiente se basa en el evento Worksheet_Change, lo que significa que se activa solo cuando Excel detecta un cambio en la hoja de trabajo.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim sMsg As String

sMsg = "No entries allowed between 4:00 pm and 6:30 pm!"

If Time >= "4:00:00 PM" And Time <= "6:30:00 PM" Then         MsgBox sMsg, vbCritical         With Application             .EnableEvents = False             .Undo   ' This undoes the change the person made             .EnableEvents = True         End With     End If End Sub

Esencialmente, cada vez que hay un cambio en la hoja de trabajo, el manejador verifica si es entre las 4:00 pm y las 6:30 pm. Si es así, se muestra un cuadro de mensaje para indicar el error y, a continuación, se utiliza el método .Undo para revertir cualquier cambio que se haya intentado.

Si lo prefiere, puede adoptar un enfoque diferente y proteger la hoja de trabajo si está dentro del tiempo prohibido:

Private Sub Worksheet_Activate()

If Time >= "4:00:00 PM" And Time <= "6:30:00 PM" Then         ActiveSheet.Protect         MsgBox "Worksheet is protected."

Else         ActiveSheet.Unprotect         MsgBox "You are free to edit now."

End If End Sub

El controlador de eventos Worksheet_Activate se invoca cada vez que se activa (selecciona) la hoja de trabajo. Si la hoja de trabajo se activa en cualquier momento fuera del tiempo prohibido, entonces está desprotegida. Por supuesto, el usuario podría desproteger manualmente la hoja de trabajo incluso durante el tiempo prohibido, por lo que es una buena idea usar este enfoque junto con un enfoque que se activa cada vez que se intenta un cambio, como se discutió anteriormente.

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (13503) se aplica a Microsoft Excel 2007, 2010, 2013 y 2016.