Este artigo contém exemplos de funções do Microsoft Visual Basic for Applications que pode utilizar para converter um valor numérico existente numa célula de uma folha de cálculo do Microsoft Excel no respectivo equivalente em palavras portuguesas.
A Microsoft fornece exemplos de programação apenas a título informativo, sem garantia expressa ou implícita, incluindo, sem limitação, as garantias implícitas de comercialização e/ou adequação a um fim específico. Este artigo pressupõe que o utilizador conhece a linguagem de programação apresentada e as ferramentas utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento. No entanto, não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.
Como criar a função de exemplo denominada EscreverNumero
- Inicie o Microsoft Excel.
- Prima ALT+F11 para iniciar o editor do Visual Basic.
- No menu Insert, clique em Module.
- Escreva o seguinte código na folha do módulo.
Option Explicit
'Main Function
Function SpellNumber(ByVal MyNumber)
Dim Dollars, Cents, Temp
Dim DecimalPlace, Count
ReDim Place(9) As String
Place(2) = " Thousand "
Place(3) = " Million "
Place(4) = " Billion "
Place(5) = " Trillion "
' String representation of amount.
MyNumber = Trim(Str(MyNumber))
' Position of decimal place 0 if none.
DecimalPlace = InStr(MyNumber, ".")
' Convert cents and set MyNumber to dollar amount.
If DecimalPlace > 0 Then
Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _
"00", 2))
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End If
Count = 1
Do While MyNumber <> ""
Temp = GetHundreds(Right(MyNumber, 3))
If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Else
MyNumber = ""
End If
Count = Count + 1
Loop
Select Case Dollars
Case ""
Dollars = "No Dollars"
Case "One"
Dollars = "One Dollar"
Case Else
Dollars = Dollars & " Dollars"
End Select
Select Case Cents
Case ""
Cents = " and No Cents"
Case "One"
Cents = " and One Cent"
Case Else
Cents = " and " & Cents & " Cents"
End Select
SpellNumber = Dollars & Cents
End Function
' Converts a number from 100-999 into text
Function GetHundreds(ByVal MyNumber)
Dim Result As String
If Val(MyNumber) = 0 Then Exit Function
MyNumber = Right("000" & MyNumber, 3)
' Convert the hundreds place.
If Mid(MyNumber, 1, 1) <> "0" Then
Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
End If
' Convert the tens and ones place.
If Mid(MyNumber, 2, 1) <> "0" Then
Result = Result & GetTens(Mid(MyNumber, 2))
Else
Result = Result & GetDigit(Mid(MyNumber, 3))
End If
GetHundreds = Result
End Function
' Converts a number from 10 to 99 into text.
Function GetTens(TensText)
Dim Result As String
Result = "" ' Null out the temporary function value.
If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
Select Case Val(TensText)
Case 10: Result = "Ten"
Case 11: Result = "Eleven"
Case 12: Result = "Twelve"
Case 13: Result = "Thirteen"
Case 14: Result = "Fourteen"
Case 15: Result = "Fifteen"
Case 16: Result = "Sixteen"
Case 17: Result = "Seventeen"
Case 18: Result = "Eighteen"
Case 19: Result = "Nineteen"
Case Else
End Select
Else ' If value between 20-99...
Select Case Val(Left(TensText, 1))
Case 2: Result = "Twenty "
Case 3: Result = "Thirty "
Case 4: Result = "Forty "
Case 5: Result = "Fifty "
Case 6: Result = "Sixty "
Case 7: Result = "Seventy "
Case 8: Result = "Eighty "
Case 9: Result = "Ninety "
Case Else
End Select
Result = Result & GetDigit _
(Right(TensText, 1)) ' Retrieve ones place.
End If
GetTens = Result
End Function
' Converts a number from 1 to 9 into text.
Function GetDigit(Digit)
Select Case Val(Digit)
Case 1: GetDigit = "One"
Case 2: GetDigit = "Two"
Case 3: GetDigit = "Three"
Case 4: GetDigit = "Four"
Case 5: GetDigit = "Five"
Case 6: GetDigit = "Six"
Case 7: GetDigit = "Seven"
Case 8: GetDigit = "Eight"
Case 9: GetDigit = "Nine"
Case Else: GetDigit = ""
End Select
End Function
Como utilizar a função de exemplo EscreverNumero
Para utilizar as funções de exemplo para converter um número em texto, utilize um dos métodos demonstrados nos seguintes exemplos:
Método 1: Introdução Directa:
Pode alterar 32,50 para "Trinta e Dois Euros e Cinquenta Cêntimos" introduzindo a seguinte fórmula numa célula:
=EscreverNumero(32,50)
Método 2: Referenciar uma Célula
Pode referenciar outras células da folha de cálculo. Por exemplo, introduza o número 32,50 na célula A1 e escreva a seguinte fórmula noutra célula:
=EscreverNumero(A1)
Método 3: Colar Função ou Inserir Função
Pode utilizar a funcionalidade
Colar Função do Excel 2000 e no Excel 2002 ou a funcionalidade
Inserir Função do Excel 2003 para introduzir uma função personalizada numa folha de cálculo.
Excel 2000 e Excel 2002
Para utilizar
Colar Função, siga estes passos:
- Seleccione a célula pretendida.
- Clique em Colar Função na barra de ferramentas Padrão.
- Em Categoria da Função, clique em Definidas pelo Utilizador.
- Em Nome da Função, clique em EscreverNumero e clique em OK.
- Introduza o número ou a referência da célula que pretende e clique em OK.
- Clique em Concluir.
Excel 2003
Para utilizar
Inserir Função, siga estes passos:
- Seleccione a célula pretendida.
- Clique em Inserir Função na barra de ferramentas Padrão.
- Em Ou seleccione uma categoria, clique em Definidas pelo Utilizador.
- Na lista Seleccionar Função, clique em EscreverNumero e clique em OK.
- Introduza o número ou a referência da célula que pretende e clique em OK.