2014-10-24 3 views
0

나는이 코드를 Microsoft 웹 사이트에서 발견했으며이를 편집하여 One Hunred 또는 One Thandand를 쓰지 않고 추가로 찾았습니다. Mid (MyNumber, 1, 1)) = "1"Then Result = "Hundred"End If to GetHundreds 기능이 없습니다. 백보다 이전에 하나예요. 어떻게 동일하게 만들 수 있습니까? 부분?Visual Basic Excel 숫자를 영어

감사합니다.

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  

답변

0

당신은 GetDigitsGetTens 기능의 결과를 변경해야합니다.

+0

좀 더 구체적으로 알려주시겠습니까? 나는 그것을 이해할 수 없다. – Feyyaz

관련 문제