Este tutorial demonstrará como usar a função de texto no VBA.
A função Texto é usada em uma planilha do Excel para retornar uma parte de uma string em um formato especificado. A função Text não é uma função VBA, mas pode ser usada em VBA referindo-se ao objeto Worksheet Function.
WorksheetFunction.Text
A sintaxe em VBA seria, portanto, a seguinte:
= WorksheetFunction.Text (Arg1, Arg2)
onde Arg1 é a string original e Arg2 é o formato da string que desejamos retornar.
1234567 | Sub TestWSFunction ()Dim dte As StringDim strD As Stringdte = "08/05/2021"strD = WorksheetFunction.Text (dte, "mmmm")MsgBox strDEnd Sub |
No exemplo acima, a variável de string dte está armazenando uma data. A função Texto então retorna a parte do mês da data.
Formatando Números com a Função de Texto
Podemos usar a função de texto para formatar números em nosso código VBA.
1234567 | Sub FormatCurrency ()Dim strNum As StringDim strFormat As StringstrNum = "75896.125"strFormat = WorksheetFunction.Text (strNum, "$ #, ## 0.00")MsgBox strFormatEnd Sub |
A string retornada no exemplo acima seria $ 75.896,13.
Outros exemplos de formatação de número usando a função de texto são:
12345678 | = WorksheetFunction.Text (75896.125, "0")isso vai retornar: "75896"= WorksheetFunction.Text (75896.125, "0,0")isso vai retornar: "75896,1"= WorksheetFunction.Text (75896.125, "#, ## 0")isso vai retornar: "75,896" |
No entanto, o Excel tem uma função VBA embutida que podemos usar em vez da função Texto se desejarmos formatar datas e números dentro do VBA. Isso é conhecido como função Formatar.
A função de formato VBA
Tomando o exemplo acima, em vez de usar WorksheetFunction.Text, podemos apenas usar a função de formato para obter os mesmos resultados.
12345678 | = Formato (75896.125, "0")isso vai retornar: "75896"= Formato (75896,125, "0,0")isso vai retornar: "75896,1"= Formato (75896.125, "#, ## 0")isso vai retornar: "75,896" |
Da mesma forma, podemos usar a função Format para formatar porções de data de uma string.
1234567 | Sub TestFormatFunction ()Dim dte As StringDim strD As Stringdte = "08/05/2021"strD = Formato (dte, "mmmm")MsgBox strDEnd Sub |