0% found this document useful (0 votes)
8 views4 pages

Convert Numbers to Kyats and Pyas

The document contains a VBA function that converts a numeric value in Kyats and Pyas into words. It includes several helper functions to break down the number into hundreds, tens, and digits, ensuring proper formatting and handling of decimal places. The final output is a string that represents the number in words, followed by 'only'.

Uploaded by

Wutt Yi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views4 pages

Convert Numbers to Kyats and Pyas

The document contains a VBA function that converts a numeric value in Kyats and Pyas into words. It includes several helper functions to break down the number into hundreds, tens, and digits, ensuring proper formatting and handling of decimal places. The final output is a string that represents the number in words, followed by 'only'.

Uploaded by

Wutt Yi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Function SpellNumberKyats(ByVal MyNumber As String) As String

Dim KyatsPart As String, PyasPart As String

Dim Result As String

Dim DecimalPos As Integer

' Find decimal position

DecimalPos = InStr(1, MyNumber, ".")

' Separate Kyats and Pyas parts

If DecimalPos > 0 Then

KyatsPart = Left(MyNumber, DecimalPos - 1) ' Get the whole number part

PyasPart = Mid(MyNumber, DecimalPos + 1) ' Get the decimal part

If Len(PyasPart) = 1 Then PyasPart = PyasPart & "0" ' Ensure two digits for Pyas

PyasPart = Left(PyasPart, 2) ' Take only two decimal places

Else

KyatsPart = MyNumber

PyasPart = "00"

End If

' Convert Kyats part

If Val(KyatsPart) > 0 Then

Result = ConvertNumberToWords(KyatsPart) & " Kyats"

End If

' Convert Pyas part if it's not zero

If Val(PyasPart) > 0 Then

If Result <> "" Then Result = Result & " and "

Result = Result & ConvertNumberToWords(PyasPart) & " Pyas"

End If

' Add "only" at the end

SpellNumberKyats = Result & " only"

End Function
' Convert numbers to words

Function ConvertNumberToWords(ByVal MyNumber As String) As String

Dim Units As String

Dim TempStr As String

Dim Count As Integer

Dim Place(9) As String

Dim Digits As String

' Define place values

Place(2) = " Thousand "

Place(3) = " Million "

Place(4) = " Billion "

Place(5) = " Trillion "

' Remove leading zeros

MyNumber = Trim(Str(Val(MyNumber)))

Count = 1

Do While MyNumber <> ""

Digits = Right(MyNumber, 3)

MyNumber = Left(MyNumber, Len(MyNumber) - Len(Digits))

If Val(Digits) > 0 Then

TempStr = GetHundreds(Digits) & Place(Count) & TempStr

End If

Count = Count + 1

Loop

ConvertNumberToWords = [Link](TempStr)

End Function

Function GetHundreds(ByVal MyNumber)

Dim Result As String


If Val(MyNumber) = 0 Then Exit Function

MyNumber = Right("000" & MyNumber, 3)

If Mid(MyNumber, 1, 1) <> "0" Then

Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "

End If

If Mid(MyNumber, 2, 1) <> "0" Then

Result = Result & GetTens(Mid(MyNumber, 2))

Else

Result = Result & GetDigit(Mid(MyNumber, 3))

End If

GetHundreds = Trim(Result)

End Function

Function GetTens(TensText)

Dim Result As String

If Val(Left(TensText, 1)) = 1 Then

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

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))

End If

GetTens = Trim(Result)

End Function

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

You might also like