La Función WorksheetFunction.IsText sirve para confirmar que el valor de una celda es texto o no lo es. En caso que sucede lo primero el resultado de la función será “Verdadero” caso contrario será "Falso".
Sintaxis WorksheetFunction.IsText
La sintaxis de WorksheetFunction.IsText es:
WorksheetFunction.IsText(Arg1)
El resultado de la ejecución de esta función retorna verdadero o falso, de acuerdo al argumento que la función recibe. Esta función equivale a la función =ESTEXTO que podemos emplear en cualquier celda de Excel.
Cabe precisar que en VBA no existe una función ISSTRING, por lo que el uso de WorksheetFunction.IsText cumple con la funcionalidad de ISSTRING (que esta presente en otros lenguajes).
Ejemplo de WorksheetFunction.IsText
A continuación se presentara un ejemplo en el cual se utiliza esta función.
Ejemplo: Según la ley de Reilly, el Área de Mercado es la distancia máxima que una persona se trasladaría para comprar. La fórmula para el Área de Mercado de la ciudad pequeña ( menor población) hacia otra grande ( mayor población) ciudades es la siguiente:
Para el caso de la pequeña es la Distancia entre las dos ciudades - el área de mercado de mercado de la ciudad pequeña.
En este ejemplo, usaremos las distancias entre los siguientes distritos de Cajamarca:
Primero copiamos en la primera hoja " Áreas de Mercados" un cuadro de doble entrada donde se colocan las distancias.
(Para mayor visualización de la imagen, hacer click en la misma)
Luego en en la siguiente hoja se coloca un cuadro para colocar el nombre de los distritos.
(Para mayor visualización de la imagen, hacer click en la misma)
Luego utilizamos el siguiente macros que permite que aparezca un recuadro con la distancia entre el distrito 1 y el distrito dos. En caso de que se ingrese un número por error saldrá un cuadro con el siguiente mensaje " Usted ingresó un número". la Función Istext permite detectar si lo escrito debajo de distrito 1 y distrito 2 es un número o el nombre de un distrito.
La macro correspondiente es la siguiente:
Sub proceso2()
Dim Rango1 As Object
Dim Rango2 As Object
distrito1 = Worksheets("Cálculo del área de mercado").Range("c5").Value
distrito2 = Worksheets("Cálculo del área de mercado").Range("d5").Value
Set Rango1 = Worksheets("Áreas de Mercado").Range("A1:AA1")
Set Rango2 = Worksheets("Áreas de Mercado").Range("A1:AA26")
If WorksheetFunction.IsText(distrito1) And WorksheetFunction.IsText(distrito2) Then
concatenar = WorksheetFunction.Match(distrito2, Rango1, 0)
AreaDeMercado = WorksheetFunction.VLookup(distrito1, Rango2, concatenar, False)
MsgBox "El Área de Mercado de " & distrito1 & " se extiende " & AreaDeMercado & " kilómetros " & " hacia " & distrito2
Else
MsgBox " Usted ingresó un número"
End If
End Sub
Realizado con el apoyo de: Carlos Andre
21/03/2015 a las 4:27 pm
¿Esta función es equivalente a =estexto() cuando se trabaja manualmente la hoja de texto?
¿Existe alguna posibilidad de usar el comando en español cuando se digita la macro?
21/03/2015 a las 4:41 pm
Efectivamente Saúl
Es equivalente a =estexto .... las diversas funciones en VBA ( https://www.excel-avanzado.com/funciones-vba ) solo estan disponibles en Inglés.
Saludos
24/03/2015 a las 10:50 pm
Aparte de la ley de Reilly tal vez existirá otra ley, para hacer comparaciones y así poder aprender mejor el tema.
25/03/2015 a las 12:13 am
Tengo la impresión de que este comando sería muy útil a la hora de crear un macro que "depure" las respuestas dadas a un formulario y nos permita identificar si el usuario (o nosotros mismos, quizás) ha declarado un valor no correspondiente al campo. Imagino que podría usarse con Worksheet.IsNumber y, quizás, con la función ISERROR (la cual nos permitiría identificar en qué campos debemos buscar errores).
Tengo una duda. ¿Por qué la diferencia en nomenclatura entre WorksheetFunction.IsText, WorksheetFunction.IsNumber e ISERROR? Comprendo que IsText es el equivalente de =ESTEXTO() y por tanto es literalmente, una función de la worksheet, pero me gustaría saber cuál es la situación con las otras funciones y por qué, si son tan similares, no son del mismo tipo.
Un saludo.
15/05/2015 a las 12:24 am
Me parece interesante la forma en cadena en la que trabaja el programador. Sobre el ejemplo, ¿En que parte de la programación está la orden de hacer lo mismo para todas las celdas y no solo para primera?
01/07/2015 a las 11:53 pm
Esta función en el ejemplo cumple la condición de identificar si son textos los nombres de los distritos, caso contrario saldrá el mensaje "Usted ingresó un número". Es importante primero asegurarse que los datos ingresados sean textos para así comparar la distancia entre ellos y el resultado sea justamente lo esperado. Esta función cumple esta importante "misión" dentro de todo el algoritmo.