
Quiero restringir a los usuarios a ingresar solo 0 o 1 en una hoja de Excel 2007.
Utilizo el cuadro de diálogo Datos > Validación de datos para hacer esto, pero encuentro que eso no les impide ingresar espacios en blanco.
Lo que me gustaría es que haya un mensaje cuando ingresan espacios en blanco, como el que aparece cuando ingresan cualquier otro dato que no esté en blanco y que no sea 0 o 1.
Planeo llenar la hoja con 0antesaplicando la validación, por lo que no debería haber problema con datos erróneos.
Además, estoy abierto a usar VBA para solucionar este problema.
Respuesta1
Este procedimiento de evento de cambio examinará cualquier celda que tenga validación y mostrará el mensaje de error de la validación. No funciona como validación porque no fuerza un "reintento". Además, coloca un '1' allí si se elimina. Podrías poner el valor anterior ahí, pero requeriría más trabajo y generalmente es algo que trato de evitar.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sForm As String
On Error Resume Next
sForm = Target.Validation.Formula1
On Error GoTo 0
If Len(sForm) > 0 Then 'has validation
If IsEmpty(Target.Value) Then 'cell was deleted
MsgBox Target.Validation.ErrorMessage, vbOKOnly, Target.Validation.ErrorTitle
Application.EnableEvents = False
Target.Value = 1
Application.EnableEvents = True
End If
End If
End Sub
Respuesta2
Debería haber una opción en la configuración de Validación de datos para "Ignorar espacios en blanco". Si desactiva (desmarca) la opción, ¿eso no hace lo que desea?
Configure el DV en un número entero entre 0 y 1 y desmarque "Ignorar espacios en blanco".