Esta função do Microsoft Access receba um valor numérico como parâmetro, o traduzirá como texto.
Esta função é muito útil em especial se você trabalhar numa empresa multinacional.
O resultado final é um valor numérico convertida em Inglês em um formulário ou relatório.
Public Function wsiSpellNumber (ByVal MyNumber)Dim Dollars, Cents, TempDim DecimalPlace, CountReDim Place(9) As String
Let Place(2) = " Thousand "Let Place(3) = " Million "Let Place(4) = " Billion "Let Place(5) = " Trillion "
' String representation of amount.Let MyNumber = Trim(Str(MyNumber))
' Position of decimal place 0 if none.Let DecimalPlace = InStr(MyNumber, ".")
' Convert cents and set MyNumber to dollar amount.If DecimalPlace > 0 ThenLet Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _"00", 2))Let MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))End IfCount = 1Do While MyNumber <> ""Let Temp = GetHundreds(Right(MyNumber, 3))If Temp <> "" Then Dollars = Temp & Place(Count) & DollarsIf Len(MyNumber) > 3 ThenLet MyNumber = Left(MyNumber, Len(MyNumber) - 3)ElseLet MyNumber = ""End IfLet Count = Count + 1LoopSelect Case DollarsCase ""Let Dollars = "No Dollars"Case "One"Let Dollars = "One Dollar"Case ElseLet Dollars = Dollars & " Dollars"End SelectSelect Case CentsCase ""Let Cents = " and No Cents"Case "One"Let Cents = " and One Cent"Case ElseLet Cents = " and " & Cents & " Cents"End SelectLet wsiSpellNumber = Dollars & CentsEnd Function' Converts a number from 100-999 into textFunction GetHundreds(ByVal MyNumber)Dim result As StringIf Val(MyNumber) = 0 Then Exit FunctionLet MyNumber = Right("000" & MyNumber, 3)' Convert the hundreds place.If Mid(MyNumber, 1, 1) <> "0" ThenLet result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "End If' Convert the tens and ones place.If Mid(MyNumber, 2, 1) <> "0" ThenLet result = result & GetTens(Mid(MyNumber, 2))ElseLet result = result & GetDigit(Mid(MyNumber, 3))End IfLet GetHundreds = resultEnd Function' Converts a number from 10 to 99 into text.Function GetTens(TensText)Dim result As StringLet 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 ElseEnd SelectElse ' 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 ElseEnd SelectLet result = result & GetDigit _(Right(TensText, 1)) ' Retrieve ones place.End IfLet GetTens = resultEnd 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 SelectEnd Function
Tags: Access, numbers, convert, text, extenso, inglês,
Nenhum comentário:
Postar um comentário