viernes, octubre 15, 2010

Impedir ingreso de fórmulas en celdas de Excel

Excel viene provisto con un mecanismo para controlar el tipo de datos permitidos en un rango: Validación de datos. La herramienta controla el tipo de datos ingresado, es decir, constantes (números, fechas, texto), pero no evitará que el usuario ingrese una fórmula en el rango validado.

Este problema se me presentó cuando estaba desarrollando un formulario para ingresar datos de gastos



Este tipo de formularios basados en hojas de Excel requieren poco esfuerzo para construirlos. Los valores permitidos para cada uno de los campos están controlados con Validación de datos; los botones en la parte inferior permiten pasar los datos a otra hoja que hace las veces de base de datos; las filas y columnas innecesarias están simplemente ocultas.

El problema es que validación de datos no impide que una fórmula sea ingresada en las celdas de la columna Monto



Para evitar esto tenemos que usar un evento. En el módulo de la hoja correspondiente ponemos este código

Private Sub Worksheet_Change(ByVal Target As Range)
   
    If Union(Target, Range("rngMonto")).Address = Range("rngMonto").Address Then
        If Target.HasFormula Then
            Target.ClearContents
            MsgBox "Solo valores, no formulas!"
        End If
    End If
   
End Sub


Al introducir un valor en el rango Monto, se dispara el código que evalúa si se trata de una fórmula con la propiedad HasFormula. En caso positivo el contenido de la celda (target) es borrado y aparece el mensaje informando que no está permitido introducir fórmulas.

Este video muestra el funcionamiento de la validación

1 comentario:

Nota: sólo los miembros de este blog pueden publicar comentarios.