2016-06-14 2 views

Antwort

0

Goto Berichtseigenschaften ---> Code-Paste Code unten in diesem Dialogfeld und dann in das Textfeld ein, wo Sie Zahl konvertieren möchten, um Text Ex: Code.RupeesToWord(100)

Function RupeesToWord(ByVal MyNumber) 
Dim Temp 
Dim Rupees, Paisa As String 
Dim DecimalPlace, iCount 
Dim Hundreds, Words As String 
Dim place(9) As String 
place(0) = " Thousand " 
place(2) = " Lakh " 
place(4) = " Crore " 
place(6) = " Arab " 
place(8) = " Kharab " 

On Error Resume Next 
' Convert MyNumber to a string, trimming extra spaces. 
MyNumber = Trim(Str(MyNumber)) 

' Find decimal place. 
DecimalPlace = InStr(MyNumber, ".") 

' If we find decimal place... 
If DecimalPlace > 0 Then 
' Convert Paisa 
Temp = Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2) 
Paisa = " and " & ConvertTens(Temp) & " Paisa" 
Paisa = "" 
' Strip off paisa from remainder to convert. 
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1)) 
End If 

'=============================================================== 
Dim TM As String ' If MyNumber between Rs.1 To 99 Only. 
TM = Right(MyNumber, 2) 

If Len(MyNumber) > 0 And Len(MyNumber) <= 2 Then 
If Len(TM) = 1 Then 
Words = ConvertDigit(TM) 
RupeesToWord = "Rupees " & Words & Paisa & " Only" 

Exit Function 

Else 
If Len(TM) = 2 Then 
Words = ConvertTens(TM) 
RupeesToWord = "Rupees " & Words & Paisa & " Only" 
Exit Function 

End If 
End If 
End If 
'=============================================================== 


' Convert last 3 digits of MyNumber to ruppees in word. 
Hundreds = ConvertHundreds(Right(MyNumber, 3)) 
' Strip off last three digits 
MyNumber = Left(MyNumber, Len(MyNumber) - 3) 

iCount = 0 
Do While MyNumber <> "" 
'Strip last two digits 
Temp = Right(MyNumber, 2) 
If Len(MyNumber) = 1 Then 


If Trim(Words) = "Thousand" Or _ 
Trim(Words) = "Lakh Thousand" Or _ 
Trim(Words) = "Lakh" Or _ 
Trim(Words) = "Crore" Or _ 
Trim(Words) = "Crore Lakh Thousand" Or _ 
Trim(Words) = "Arab Crore Lakh Thousand" Or _ 
Trim(Words) = "Arab" Or _ 
Trim(Words) = "Kharab Arab Crore Lakh Thousand" Or _ 
Trim(Words) = "Kharab" Then 

Words = ConvertDigit(Temp) & place(iCount) 
MyNumber = Left(MyNumber, Len(MyNumber) - 1) 

Else 

Words = ConvertDigit(Temp) & place(iCount) & Words 
MyNumber = Left(MyNumber, Len(MyNumber) - 1) 

End If 
Else 

If Trim(Words) = "Thousand" Or _ 
Trim(Words) = "Lakh Thousand" Or _ 
Trim(Words) = "Lakh" Or _ 
Trim(Words) = "Crore" Or _ 
Trim(Words) = "Crore Lakh Thousand" Or _ 
Trim(Words) = "Arab Crore Lakh Thousand" Or _ 
Trim(Words) = "Arab" Then 


Words = ConvertTens(Temp) & place(iCount) 


MyNumber = Left(MyNumber, Len(MyNumber) - 2) 
Else 

'================================================================= 
' if only Lakh, Crore, Arab, Kharab 

If Trim(ConvertTens(Temp) & place(iCount)) = "Lakh" Or _ 
Trim(ConvertTens(Temp) & place(iCount)) = "Crore" Or _ 
Trim(ConvertTens(Temp) & place(iCount)) = "Arab" Then 

Words = Words 
MyNumber = Left(MyNumber, Len(MyNumber) - 2) 
Else 
Words = ConvertTens(Temp) & place(iCount) & Words 
MyNumber = Left(MyNumber, Len(MyNumber) - 2) 
End If 

End If 
End If 

iCount = iCount + 2 
Loop 

RupeesToWord = "Rupees " & Words & Hundreds & Paisa & " Only" 
End Function 

' Conversion for hundreds 
'***************************************** 
Private Function ConvertHundreds(ByVal MyNumber) 
Dim Result As String 

' Exit if there is nothing to convert. 
If Val(MyNumber) = 0 Then Exit Function 

' Append leading zeros to number. 
MyNumber = Right("000" & MyNumber, 3) 

' Do we have a hundreds place digit to convert? 
If Left(MyNumber, 1) <> "0" Then 
Result = ConvertDigit(Left(MyNumber, 1)) & " Hundreds " 
End If 

' Do we have a tens place digit to convert? 
If Mid(MyNumber, 2, 1) <> "0" Then 
Result = Result & ConvertTens(Mid(MyNumber, 2)) 
Else 
' If not, then convert the ones place digit. 
Result = Result & ConvertDigit(Mid(MyNumber, 3)) 
End If 

ConvertHundreds = Trim(Result) 
End Function 

' Conversion for tens 
'***************************************** 
Private Function ConvertTens(ByVal MyTens) 
Dim Result As String 

' Is value between 10 and 19? 
If Val(Left(MyTens, 1)) = 1 Then 
Select Case Val(MyTens) 
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 
' .. otherwise it's between 20 and 99. 
Select Case Val(Left(MyTens, 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 

' Convert ones place digit. 
Result = Result & ConvertDigit(Right(MyTens, 1)) 
End If 

ConvertTens = Result 
End Function 

Private Function ConvertDigit(ByVal MyDigit) 
Select Case Val(MyDigit) 
Case 1 : ConvertDigit = "One" 
Case 2 : ConvertDigit = "Two" 
Case 3 : ConvertDigit = "Three" 
Case 4 : ConvertDigit = "Four" 
Case 5 : ConvertDigit = "Five" 
Case 6 : ConvertDigit = "Six" 
Case 7 : ConvertDigit = "Seven" 
Case 8 : ConvertDigit = "Eight" 
Case 9 : ConvertDigit = "Nine" 
Case Else : ConvertDigit = "" 
End Select 
End Function 
Verwandte Themen