sajids12bd
New Member
- Joined
- Mar 7, 2021
- Messages
- 3
- Office Version
- 2010
- Platform
- Windows
- Mobile
- Web
Can anyone help me on this VBA code. I just want to add 'and' in the last integer number. such as; 12520 - twelve thousand five hundred and twenty, or 12500 - twelve thousand and five hundred.
VBA Code:
Function BdTaka(ByVal N As Currency) As String
Const hundred = 100@
Const thousand = 1000@
Const lac = 100000@
Const crore = 10000000@
If (N = 0@) Then BangladeshTaka = "Zero": Exit Function
Dim Buf As String: If (N < 0@) Then Buf = "Negative " Else Buf = ""
Dim Frac As Currency: Frac = Abs(N - Fix(N))
If (N < 0@ Or Frac <> 0@) Then N = Abs(Fix(N))
Dim AtLeastOne As Integer: AtLeastOne = N >= 1
If (N >= crore) Then
Buf = Buf & BangladeshTakaDigitGroup(Int(N / crore)) & " crore"
N = N - Int(N / crore) * crore
If (N >= 1@) Then Buf = Buf & " "
End If
If (N >= lac) Then
Buf = Buf & BangladeshTakaDigitGroup(Int(N / lac)) & " lac"
N = N - Int(N / lac) * lac
If (N >= 1@) Then Buf = Buf & " "
End If
If (N >= thousand) Then
Buf = Buf & BangladeshTakaDigitGroup(N \ thousand) & " thousand"
N = N Mod thousand
If (N >= 1@) Then Buf = Buf & " "
End If
If (N >= hundred) Then
Buf = Buf & BangladeshTakaDigitGroup(N \ hundred) & " hundred"
N = N Mod hundred
If (N >= 1@) Then Buf = Buf & " and "
End If
If (N >= 0@) Then
Buf = "" & Buf & BangladeshTakaDigitGroup(N) & ""
End If
If (Frac = 0@) Then
Buf = Buf & ""
Else
If AtLeastOne Then Buf = Buf & " "
Buf = Buf & " and " & BangladeshTakaDigitGroup(Frac * 100) & " Paisa"
End If
BdTaka = Buf & " only"
End Function
Private Function BangladeshTakaDigitGroup(ByVal N As Integer) As String
Const One = "one"
Const Two = "two"
Const Three = "three"
Const Four = "four"
Const Five = "five"
Const Six = "six"
Const Seven = "seven"
Const Eight = "eight"
Const Nine = "nine"
Dim Buf As String: Buf = ""
Dim Flag As Integer: Flag = False
Select Case (N \ 100)
Case 0: Buf = "": Flag = False
Case 1: Buf = One & hundred: Flag = True
Case 2: Buf = Two & hundred: Flag = True
Case 3: Buf = Three & hundred: Flag = True
Case 4: Buf = Four & hundred: Flag = True
Case 5: Buf = Five & hundred: Flag = True
Case 6: Buf = Six & hundred: Flag = True
Case 7: Buf = Seven & hundred: Flag = True
Case 8: Buf = Eight & hundred: Flag = True
Case 9: Buf = Nine & hundred: Flag = True
End Select
If (Flag <> False) Then N = N Mod 100
If (N > 0) Then
If (Flag <> False) Then Buf = Buf & " "
Else
BangladeshTakaDigitGroup = Buf
Exit Function
End If
Select Case (N \ 10)
Case 0, 1: Flag = False
Case 2: Buf = Buf & "twenty": Flag = True
Case 3: Buf = Buf & "thirty": Flag = True
Case 4: Buf = Buf & "forty": Flag = True
Case 5: Buf = Buf & "fifty": Flag = True
Case 6: Buf = Buf & "sixty": Flag = True
Case 7: Buf = Buf & "seventy": Flag = True
Case 8: Buf = Buf & "eighty": Flag = True
Case 9: Buf = Buf & "ninety": Flag = True
End Select
If (Flag <> False) Then N = N Mod 10
If (N > 0) Then
If (Flag <> False) Then Buf = Buf & " "
Else
BangladeshTakaDigitGroup = Buf
Exit Function
End If
Select Case (N)
Case 0:
Case 1: Buf = Buf & One
Case 2: Buf = Buf & Two
Case 3: Buf = Buf & Three
Case 4: Buf = Buf & Four
Case 5: Buf = Buf & Five
Case 6: Buf = Buf & Six
Case 7: Buf = Buf & Seven
Case 8: Buf = Buf & Eight
Case 9: Buf = Buf & Nine
Case 10: Buf = Buf & "ten"
Case 11: Buf = Buf & "eleven"
Case 12: Buf = Buf & "twelve"
Case 13: Buf = Buf & "thirteen"
Case 14: Buf = Buf & "fourteen"
Case 15: Buf = Buf & "fifteen"
Case 16: Buf = Buf & "sixteen"
Case 17: Buf = Buf & "seventeen"
Case 18: Buf = Buf & "eighteen"
Case 19: Buf = Buf & "nineteen"
End Select
BangladeshTakaDigitGroup = Buf
End Function