Excel Avanzado

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

Excel Avanzado

Funcion IsNumeric

| 50 Comments

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

50 Comments

  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,

  21. Una muy buena opción para que se valide una celda de tal modo que solo se puedan colocar números y no texto. También podría ser factible modificarla para que solo admita una cierta cantidad de números y asi pueda adecuarse a necesidades diferentes.

  22. Una muy buena opción para poder validar una celda y hace que solo admita número y evitar datos de texto. Una opción podría ser modificara para que también restrinja la cantidad de número que se ingresas para poder cubrir diversas necesidades.

  23. Una buena opción para poder validar la celda de modo que no acepte texto y solo números. Sería bueno modificarla para que también se restrinja la cantidad de números que se pueden introducir para que se pueda usar para diversas funciones como el ingreso del DNI.

    • Hola Juan

      Claro que si se puede modificar la formula para que restrinja la cantidad de números que se pueden introducir como el ingreso del DNI.

      Adjunto formula

      dni = TextBox1.Text

      If Len(Trim(dni)) = 8 And IsNumeric(dni) Then

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

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

      TextBox1.Text = “”

      Else

      MsgBox “Ingrese un DNI válido”

      End If

      Espero que haya sido de tu ayuda el comentario

      Saludos,

  24. Con respecto a esta función… veo una utilidad enorme… ya que nosotros manejamos una gestión de notas bimestrales y a veces hay docencia que coloca las notas en forma textual o más aun me colocan notas acompañadas de un carácter que por casualidad han ingresado… y ahí esta función me advierte el mal ingreso de dichas notas… excelente función ayudándome a no cometer errores a la hora de preparar las boletas de información

  25. Es una función que permite evaluar si un dato es numérico y da como resultado Verdadero si es correcto o Falso si no lo es. Esto permite controlar la información que se ingresa.

  26. Esta Funcion IsNumeric devuelve un valor de tipo Boolean que indica si una expresión puede evaluarse como un número.

    Dim testVar As Object
    Dim numericCheck As Boolean
    testVar = “53”
    numericCheck = IsNumeric(testVar)
    testVar = “459.95”
    numericCheck = IsNumeric(testVar)
    testVar = “45 Help”
    numericCheck = IsNumeric(testVar)

  27. Aplique la fórmula en el useform correctamente pero no sé como colocar la imagen o como seleccionar alguna para personalizar.

    Gracias

    • Hola Erika

      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,

    • Erika lo que tienes que hacer el seleccionar el formulario y tienes que seleccionar la opción “picture” , la cual previamente tienes que verificar se encuentre tu escritorio o disco que la hayas guardado, una vez que seleccionas la opción picture puedes elegir tu imagen.

  28. como lo puedo ejecutar directo de la hoja excel y no del visual basic

    • Buenas, lo que se podría hacer es que ni bien abras tu archivo de excel, el aplicativo cargue directo sin entrar al visual basic. Lo que se debe hacer es cuando te encuentras en el visual basic hay una ventana de Proyecto, dentro de este una carpeta Microsoft Excel Objetos en la que aparece This WorkBook, allí ejecutas el siguiente código:

      Private Sub Workbook_Open()
      UserForm1.Show

      End Sub

      ojo: Escribes el userform que tu quieres que aparezca.

      Luego cada vez que entres al archivo del excel, se cargara automáticamente ese userform.

      Espero que te haya servido mi respuesta.

  29. Buen día,

    Alguien sabe como incluyo una imagen de fondo como en este caso?, podrían indicar si hay alguna parte en el foro que explique como hacerlo. Gracias

    • Hola Karel, teniendo seleccionado el formulario puedes cambiar el valor de la propiedad picture.

      Saludos

      http://www.excel-avanzado.com/3284/propiedades-del-userform.html

  30. Buen día. tengo esta cadena de texto: “20000 leguas de viaje submarino”
    mi formulario tiene 1 Textbox y dos botones de comando(Autor y Titulo), en la H_Datos tendo en la colunma “A” el nombre de los Autores y en la “B” los Titulos de los libros, en la H_Criterios en “A2” y “B2” los criterios para un filtro avanzado, en la H_Resultados se muestran los datos filtrados. Si el criterio empieza con una letra no hay problema, pero si empieza con un número como el caso que les menciono, el filtro no funciona. Que hacer para que se muestren resultados cuando en el textbox se ingrese texto que empiece con un número.- Gracias

  31. Muy útil para asegurar sesgo de información ya asegurar que la información sea numérica. Suele pasar que a veces cuando digitamos números le colocamos coma en lugar del punto y se guarda la celda como si fuera un texto y a la hora de querer aplicar fórmulas simples como de suma o resta nos sale error. O también cuando copiamos una tabla de Word a Excel y los números se encuentran digitados con comas, nos genera error. De esta manera, se evitará perder el tiempo en buscar el porqué del error y conocer nuestro error de forma automática.

  32. Esta macro, nos ayudaría en ingeniería civil, pues en ingeniería estructural se requieres un montón de datos, como son cargas y fuerzas. Estas fuerzas tienen unidades;entonces, si se crearía una macro para ing. estructural ayudaría bastante el mencionar “ingrese valores numéricos”.

  33. El comando IsNumeric ¿Sólo sirve para textbox?, trato de aplicarlo en VBA, en los inputbox; empezamos a penas el curso en la uni, y aún no manejamos los textbox, solo usamos inputbox y msgbox.

  34. quisiera que combinara numeros y puntos

  35. Hola quien me puede ayudar, ¿Por que para la multiplicación funciona y la suma no?

    Private Sub TxtCosto_Change()
    If TxtCosto “” And IsNumeric(TxtCosto) Then
    TxtGanancia = TxtCosto * 0.05
    End If

    If TxtCosto “” And IsNumeric(TxtCosto) Then
    TxtIVA = TxtCosto * 0.19
    End If

    If TxtCosto “” And IsNumeric(TxtCosto) And _
    TxtGanancia “” And IsNumeric(TxtGanancia) And _
    TxtIVA “” And IsNumeric(TxtIVA) Then
    TxtPrecioUnit = TxtCosto + TxtGanancia + TxtIVA
    End If

    • en tu ejemplo
      TxtPrecioUnit = TxtCosto + TxtGanancia + TxtIVA

      estas concatenando string no sumando, lo correcto seria utilizar la funcion val para que convertirlos a numero y poderlos sumar

      TxtPrecioUnit = val(TxtCosto) + val(TxtGanancia) + val(TxtIVA)
      espero poder ayudarte a tiempo

Deja un comentario

Required fields are marked *.


Excel Avanzado located at , Lima, Perú . Reviewed by usuarios rated: 4.7 / 5