Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Funcion IsNumeric

| 53 comentarios

Función ISNUMERIC

Por: Cervantes Mejía Jhan Pierre

Funcion IsNumeric_Jhan Pierre Cervantes

Definición y uso:

IsNumeric es una función utilizada en Visual Basic, la cual nos sirve para  evaluar si una expresión es numérica o no. Asimismo, si la expresión es numérica la función retornará el valor True (Verdadero), de lo contrario devolverá el valor False (Falso). Cabe mencionar, que esta función toma como valor numérico, ya sea a números enteros como a decimales.

Ejemplo:

A continuación se presentarán los pasos para evaluar una expresión como numérica utilizando la función IsNumeric:

1º  En primer lugar, se creará un Useform, el cual tendrá un solo textbox, el cual permitirá solo el acceso de valores numéricos. En caso, se ingresen letras u otros símbolos aparecerá una ventana indicando que dicho expresión no corresponde a un valor numérico. Asimismo, como se mostrará en la siguiente imagen, el Useform  contiene un cuadro de texto, un botón de comando  y una imagen de fondo.

aaaa

2º Para que se puedan validar los valores numéricos se introducirá el siguiente código utilizando la función IsNumeric:

Private Sub CommandButton1_Click()

If IsNumeric(TextBox1.Text) Then

MsgBox (TextBox1.Text & ": Es un valor numérico")

Else

MsgBox (TextBox1.Text & " :No es un valor numérico")

End If

End Sub

Este código se introducirá en el evento vinculado al objeto CommandButton1. En este caso,  el código If IsNumeric (TextBox1.Text) Then MsgBox (TextBox1.Text & ": Es un valor numérico") indica que si el valor introducido en el textbox1 (cuadro de texto) es un valor numérico se abrirá una ventana mostrando el numero seleccionado seguido de la siguiente expresión “: Es un valor numérico”. Del mismo modo, si los valores introducidos en el TextBox1 no conforman un valor numérico aparecerá una ventana confirmando dicha afirmación, como lo veremos a continuación:

Imagennn

letras

53 comentarios

  1. Seria bueno dicha función para cuando un problema que deba introducir números y no letras por ejemplo en ingeniería civil, pides un valor numérico para verificar si la fuerza o momento resistente es menor a la actuante (valor ingresado)

  2. Les alcanzo un ejemplo sencillo para verificar un dato antes de ingresarlo a una tabla excel. Previamente debemos crear el formulario con un boton, un cuadro de texto y una etiqueta.

    Private Sub CommandButton1_Click()

    If IsNumeric(TextBox1.Text) Then
    MsgBox (TextBox1.Text & ": OK")
    Range("c3") = TextBox1.Text
    Else
    MsgBox (TextBox1.Text & " : ERROR el dato debe ser numerico")
    End If

    End Sub

    Sub Macro_Evaluar_Dato()

    Load UserForm1
    UserForm1.Show

    End Sub

    • Interesante, complementa la finalidad de la función inicial "IsNumeric"; útil para ingresar datos.

  3. La función IsNumeric ofrece la posibilidad de rechazar datos de textos cuando se necesitan datos numéricos.

  4. es muy bueno para verificar si esta ingresando datos correctos a tu base de dato

  5. Esta funcion nos permite evaluar si un dato o el contenido de la variable se pueda evaluar como un nùmero es asi que les comparto un peque ejemplo

    Private Function IsNumeric_SuNickReducido(str As String) As Boolean
    'Ejemplos:
    'Raul338:
    Private Function IsNumeric_r338(str As String) As Boolean
    '79137913:
    Private Function IsNumeric_7913(str As String) As Boolean

  6. Modifiqué el código para verificar si un grupo de valores de cinco celdas son o no numéricos utilizando el procedimiento Private Sub CommandButton1_Click() como Sub esnumerico(valor) pasándole como parámetro el valor actual de la celda, quedando el código:

    Sub esnumerico(valor)
    If IsNumeric(valor) Then
    MsgBox (valor & ": Es un valor numérico")
    Else
    MsgBox (valor & " :No es un valor numérico")
    End If
    End Sub

    Sub solonumeros()
    Range("A1:A5").Select

    For a = 0 To Selection.Cells.Count - 1
    esnumerico (ActiveCell.Offset(a, 0).Value)

    Next a
    End Sub

  7. El siguiente código pide el ingreso de la edad y solo se almacenará en la celda A1 siempre y cuando el dato a ingreasar sea numércio en caso contrario te pide que vuelvas a ingresar. espero les sirva.

    +----------------------------------------
    Public Sub esnro()
    i = 0
    Do
    edad = InputBox("Ingrese su Edad:", "Edad")
    If IsNumeric(edad) Then
    MsgBox "Dato correcto"
    i = 1
    Else
    MsgBox "Error de dato, vuelva a intentar"
    End If
    Loop Until i = 1
    Range("A1") = edad
    End Sub

  8. Estimados: ¿Cuál es la función para validar sólo letras?, ¿cómo se puede realizar una función (Function SOLO_LETRAS)?
    Gracias.

    • Private Sub TextBox2_Change()
      If IsNumeric(TextBox2) And _
      TextBox2.Text “” Then
      MsgBox (“solo Texto”)
      TextBox2.Text = “”
      TextBox2.SetFocus
      End If
      End Sub

  9. Estimados:
    VBA ISNUMBER, ISTEXT functions

    Estoy tratando de crear código que elimina las líneas en una hoja de cálculo en la primera columna está en blanco o tiene texto en él. Sin embargo, al escribir el código en VBA: ESNUMERO y ISTEXT no funcionan. Sorprendentemente, ISBLANK funciona. ¿Alguna pista se Greatley apreciados?...
    Gracias.

  10. Estimados:
    VBA ISNUMBER, ISTEXT functions
    Estoy tratando de crear código que elimina las líneas en una hoja de cálculo en la primera columna está en blanco o tiene texto en él. Sin embargo, al escribir el código en VBA: ISNUMBER y ISTEXT no funcionan. Sorprendentemente, ISBLANK funciona. ¿Alguna pista?...
    Gracias.

  11. mE PARECE UNA BUENA FUNCIÓN...
    PERMITE INGRESAR SOLO VALORES NUMERICOS..SIN EMBARGO TENGO UNA DUDA...SI NADA MAS QUIERO QUE SOLAMENTE SE INGRESEN VALORES DE 6 CIFRAS..COMO PUEDO HACER?

    • Hola Celim, para limitar el número de dígitos de ingreso necesitas esta formula:

      Sub CommandButton1_Click()

      Valor = TextBox1.Text

      If Len(Trim(valor)) = 6 And IsNumeric(dni) Then

      ult = Cells(Rows.Count, 2).End(xlUp).Row

      Cells(ult + 1, 2) = TextBox1.Text

      TextBox1.Text = ""

      Else

      MsgBox "Ingrese un número válido"

      End If

      End Sub

      Espero que haya sido de tu utilidad

      Saludos,

      • Hola Celim, para limitar el número de dígitos de ingreso necesitas esta formula:
        Sub CommandButton1_Click()
        valor = TextBox1.Text
        If Len(Trim(valor)) = 6 And IsNumeric(valor) Then
        ult = Cells(Rows.Count, 2).End(xlUp).Row
        Cells(ult + 1, 2) = TextBox1.Text
        TextBox1.Text = “”
        Else
        MsgBox “Ingrese un número válido”
        End If
        End Sub
        Espero que haya sido de tu utilidad
        Saludos,

    • Buenas amigo, primero para asegurar de no pasarte de 6 cifras, en las propiedades del textbox, en la opción maxlength escribes 6, luego para validar que solo pasen se escriban valores de 6 dígitos puedes hacer lo siguiente:

      If Len(dni) = 6 then

      Lo que hace esto es pregunta si hay 6 dígitos.

      Espero que te haya servido mi respuesta..

    • te apoyas de la funcion len, la cual te devuelve como resultado la cantidad de caracteres. Por tanto se tendria algo asi como:

      Private Sub TextBox1_Change()
      numeros = TextBox1.Value
      If IsNumeric(TextBox1) Then
      If Len(numeros) = 6 Then
      MsgBox ("Hay 6 numeros")
      End If
      Else
      MsgBox ("No")
      End If
      End Sub

    • Además de utilizar :
      dato = TextBox1.Text
      If Len(Trim(dato)) = 6 then

      cortas o haces la acción que deseas y para regarantizar que no excedan los 6
      valores, con las propiedades del textbox veeras la opcion maxlength pones 6 y cuando se intente escribir solo se podran ingresar maximo 6 valores.

  12. Lo puedo emplear en la toma de decisiones para el ingreso de notas, lo puedo combinar con la inputbox y ponerle la restricción de valor numérico o alfanumérico al momento de ingresar datos

  13. Otra función que podría ser de interés cuando se trabaja con número es Cint.

    Dim Valor As Integer

    Valor = CInt(8.45)

    En el ejemplo la variable valor tendría como valor solo la parte entera del número: 8
    Sin importar si la parte decimal es mayor de .5 siempre el resultado será la parte entera. Si en el ejemplo usamos 8.7 el resultado seguiría siendo 8.

  14. Que buen ejemplo del uso del textbox relacionado a funciones.

  15. Es muy util para la auditoria de datos. Yo utilice su version en excel en diversas oportunidades. ¿Habria alguna forma de colocar la respuesta en una celda adicional y asi filtar para trabajar solo con los valores falsos?

  16. Excelente función, muy útil a la hora de llenar formularios utilizando una interfaz de usuario.

    Saludos

  17. Una buena función a la hora de querer verificar si están bien ingresados los datos numéricos en una base de datos

  18. Esta función es muy importante para la validación de los datos que se ingresan al programa. Debe utilizarse antes de aplicar funciones que trabajan solo con números y evitar así errores. También puede usarse si el programa requiere ingresos que no sean números.
    Se complementa muy bien con funciones como InputBox, Round, Int, etc

  19. Si bien es cierto esta función es útil; al probarla veo que puede ingresarse una cantidad significativa de dígitos. Cómo puede limitarse la cantidad de dígitos que pueden ingresarse en la caja de texto?

    • Buenas amigo, Lo que se debe de hacer es en las propiedades del textbox, en la opción maxlength escribes la cantidad de dígitos máximas a escribir y con eso solucionarías ese problema.

      Espero que te sirva mi respuesta.

  20. Alguien sabe como puedo hacer para que el useform se ejecute apenas se habrá el libro de excel?

    Además, ¿Cómo puedo hacer para insertar la imagen en el useform? porque cuando pongo insertar imagen del cuadro de herramienta y una vez que termino de seleccionar el área de la imagen no me aparece para insertar la figura.

    • Hola Nayza

      Para insertar la imagen en el userform primero tienes que guardar la imagen que quieres en una carpeta de tu ordenador luego seleccionar el cuadro de la imagen dentro del useform y te diriges a sus propiedades, ahí hay una opción que dice: Picture --> Mapa de bits y le das click y automáticamente te van a aparecer unos puntos suspensivos (..), das click en ellos y te va a direccionar a tu carpeta, seleccionas en donde se encuentra la imagen guardada y listo

      Espero que haya sido de tu ayuda el comentario

      Saludos,

Página de comentarios 1 de 2
1 2

Deja una respuesta

Los campos requeridos estan marcados con *.