Este tutorial demostrará cómo usar la función de texto en VBA.
La función Texto se utiliza en una hoja de cálculo de Excel para devolver una parte de una cadena en un formato específico. La función de texto no es una función de VBA, pero se puede usar en VBA haciendo referencia al objeto de función de hoja de trabajo.
WorksheetFunction.Text
Por lo tanto, la sintaxis en VBA sería la siguiente:
= WorksheetFunction.Text (Arg1, Arg2)
donde Arg1 es la cadena original y Arg2 es el formato de la cadena que queremos que se devuelva.
1234567 | Sub TestWSFunction ()Dim dte como cadenaDim strD como cadenadte = "08/05/2021"strD = WorksheetFunction.Text (dte, "mmmm")MsgBox strDEnd Sub |
En el ejemplo anterior, la variable de cadena dte almacena una fecha. Luego, la función de texto devuelve la parte del mes de la fecha.
Dar formato a números con la función de texto
Podemos usar la función de texto para formatear números en nuestro código VBA.
1234567 | Sub FormatCurrency ()Dim strNum como cadenaDim strFormat como cadenastrNum = "75896.125"strFormat = WorksheetFunction.Text (strNum, "$ #, ## 0.00")MsgBox strFormatEnd Sub |
La cadena devuelta en el ejemplo anterior sería $ 75,896.13.
Otros ejemplos de formateo de números usando la función de texto son:
12345678 | = WorksheetFunction.Text (75896.125, "0")esto volverá: "75896"= WorksheetFunction.Text (75896.125, "0.0")esto volverá: "75896.1"= WorksheetFunction.Text (75896.125, "#, ## 0")esto volverá: "75,896" |
Sin embargo, Excel tiene una función VBA incorporada que podemos usar en lugar de la función Texto si deseamos formatear fechas y números dentro de VBA. Esto se conoce como función de formato.
La función de formato VBA
Tomando el ejemplo anterior, en lugar de usar WorksheetFunction.Text, podemos usar la función de formato para lograr los mismos resultados.
12345678 | = Formato (75896.125, "0")esto volverá: "75896"= Formato (75896.125, "0.0")esto volverá: "75896.1"= Formato (75896.125, "#, ## 0")esto volverá: "75,896" |
De manera similar, podemos usar la función de formato para formatear partes de fecha de una cadena.
1234567 | Sub TestFormatFunction ()Dim dte como cadenaDim strD como cadenadte = "08/05/2021"strD = Formato (dte, "mmmm")MsgBox strDEnd Sub |