dim i for i=97 to 122 debug.print StrConv(Chr(i), vbProperCase); next 这个?
楼主的要求是把一个阿拉伯数字转换成英文,例如1234 -> one thousand two hundred and thirty four。
大概是这样:Public Function Number2Word(ByVal x As Integer) As String Dim Ones(1 To 19) As String Dim Tens(2 To 9) As String Dim tmp As Integer Dim myWords As String If x > 999 Then Exit Function Ones(1) = "ONE" Ones(2) = "TWO" Ones(3) = "THREE" Ones(4) = "FOUR" Ones(5) = "FIVE" Ones(6) = "SIX" Ones(7) = "SEVEN" Ones(8) = "EIGHT" Ones(9) = "NINE" Ones(10) = "TEN" Ones(11) = "ELEVEN" Ones(12) = "TWELVE" Ones(13) = "THIRTEEN" Ones(14) = "FOURTEEN" Ones(15) = "FIFTEEN" Ones(16) = "SIXTEEN" Ones(17) = "SEVENTEEN" Ones(12) = "EIGHTEEN" Ones(19) = "NINETEEN" Tens(2) = "TWENTY" Tens(3) = "THIRTY" Tens(4) = "FORTY" Tens(5) = "FIFTY" Tens(6) = "SIXTY" Tens(7) = "SEVENTY" Tens(8) = "EIGHTY" Tens(9) = "NINETY" tmp = x \ 100 If tmp Then myWords = Ones(tmp) & " HUNDRED" End If tmp = x Mod 100 If tmp < 20 Then myWords = IIf(myWords > "", myWords & " AND ", "") & Ones(tmp) Else tmp = tmp \ 10 myWords = IIf(myWords > "", myWords & " AND ", "") & Tens(tmp) tmp = x Mod 10 If tmp Then myWords = IIf(myWords > "", myWords & " ", "") & Ones(tmp) End If Number2Word = myWords End FunctionPublic Function BigNumber2Word(ByVal x As Long) As String Dim tmp As Long Dim myWords As String If x > 999999999 Then Exit Function tmp = x \ 1000000 If tmp Then myWords = Number2Word(tmp) & " MILLION" End If tmp = x Mod 1000000 If tmp Then tmp = tmp \ 1000 If tmp Then myWords = IIf(myWords > "", myWords & " ", "") & Number2Word(tmp) & " THOUNSAND" End If
tmp = x Mod 1000 If tmp Then myWords = IIf(myWords > "", myWords & " ", "") & Number2Word(tmp) End If End If BigNumber2Word = myWords End Function
'Form1,Height 为10020,Width 为6630,ScaleMode设为1-Twip '添加一个Label1,Index设为0 '添加一个Text1,Index设为0 '添加一个Command1,放在Form1的最低端 Option Explicit'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Copyright 0„81996-2006 VBnet, Randy Birch, All Rights Reserved. ' Some pages may also contain other copyrights by the author. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Distribution: You can freely use this code in your own ' applications, but you may not reproduce ' or publish this code on any web site, ' online service, or distribute as source ' on any media without express permission. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Module Name: NumberAsText 'Programmer: Frederick Rothstein 'Date Released: May 16, 1999 'Date Modified: August 20, 1999 'Copyright 1999 by Frederick N. Rothstein (All rights reserved) 'array to hold the various textual 'representations of a number Private sNumberText() As StringPrivate Sub Form_Load() Dim cnt As Long Dim nTop As Long Dim nWidth As Long
For cnt = 0 To 24 '25 controls
If cnt > 0 Then Load Text1(cnt) Load Label1(cnt) End If
With Label1(cnt)
.AutoSize = True .Move 200, (300 * cnt) + nTop
Select Case cnt Case 0, 5, 10, 15, 20 .Visible = False
Case 1, 6, 11, 16, 21 .Caption = "No Format" .Visible = True Case 2, 7, 12, 17, 22 .Caption = "'And'" .Visible = True Case 3, 8, 13, 18, 23 .Caption = "'Check'" .Visible = True
End Sub Private Function IsBounded(vntArray As Variant) As Boolean
'note: the application in the IDE will stop 'at this line when first run if the IDE error 'mode is not set to "Break on Unhandled Errors" '(Tools/Options/General/Error Trapping) On Error Resume Next IsBounded = IsNumeric(UBound(vntArray))
End Function Private Function HundredsTensUnits(ByVal TestValue As Integer, _ Optional bUseAnd As Boolean) As String Dim CardinalNumber As Integer
If TestValue > 99 Then CardinalNumber = TestValue \ 100 HundredsTensUnits = sNumberText(CardinalNumber) & " Hundred " TestValue = TestValue - (CardinalNumber * 100) End If
If bUseAnd = True Then HundredsTensUnits = HundredsTensUnits & "and " End If
If TestValue > 20 Then CardinalNumber = TestValue \ 10 HundredsTensUnits = HundredsTensUnits & _ sNumberText(CardinalNumber + 18) & " " TestValue = TestValue - (CardinalNumber * 10) End If
If TestValue > 0 Then HundredsTensUnits = HundredsTensUnits & sNumberText(TestValue) & " " End IfEnd Function
Private Function NumberAsText(NumberIn As Variant, _ Optional AND_or_CHECK_or_DOLLAR As String) As String Dim cnt As Long Dim DecimalPoint As Long Dim CardinalNumber As Long Dim CommaAdjuster As Long Dim TestValue As Long Dim CurrValue As Currency Dim CentsString As String Dim NumberSign As String Dim WholePart As String Dim BigWholePart As String Dim DecimalPart As String Dim tmp As String Dim sStyle As String Dim bUseAnd As Boolean Dim bUseCheck As Boolean Dim bUseDollars As Boolean
'---------------------------------------- 'Begin setting conditions for formatting '----------------------------------------
'Determine whether to apply special formatting. 'If nothing passed, return routine result 'converted only into its numeric equivalents, 'with no additional format text. sStyle = LCase(AND_or_CHECK_or_DOLLAR) 'User passed "AND": "and" will be added 'between hundredths and tens of dollars, 'ie "Three Hundred and Forty Two" bUseAnd = sStyle = "and"
'User passed "DOLLAR": "dollar(s)" and "cents" 'appended to string, 'ie "Three Hundred and Forty Two Dollars" bUseDollars = sStyle = "dollar"
'User passed "CHECK" *or* "DOLLAR" 'If "check", cent amount returned as a fraction /100 'i.e. "Three Hundred Forty Two and 00/100" 'If "dollar" was passed, "dollar(s)" and "cents" 'appended instead. bUseCheck = (sStyle = "check") Or (sStyle = "dollar")
'---------------------------------------- 'Check/create array. If this is the first 'time using this routine, create the text 'strings that will be used. '---------------------------------------- If Not IsBounded(sNumberText) Then Call BuildArray(sNumberText) End If
'---------------------------------------- 'Begin validating the number, and breaking 'into constituent parts '----------------------------------------
'prepare to check for valid value in NumberIn = Trim$(NumberIn)
If Not IsNumeric(NumberIn) Then 'invalid entry - abort NumberAsText = "Error - Number improperly formed" Exit Function Else 'decimal check DecimalPoint = InStr(NumberIn, ".") If DecimalPoint > 0 Then 'split the fractional and primary numbers DecimalPart = Mid$(NumberIn, DecimalPoint + 1) WholePart = Left$(NumberIn, DecimalPoint - 1) Else
'assume the decimal is the last char DecimalPoint = Len(NumberIn) + 1 WholePart = NumberIn
End If If InStr(NumberIn, ",,") Or _ InStr(NumberIn, ",.") Or _ InStr(NumberIn, ".,") Or _ InStr(DecimalPart, ",") Then NumberAsText = "Error - Improper use of commas" Exit Function ElseIf InStr(NumberIn, ",") Then CommaAdjuster = 0 WholePart = "" For cnt = DecimalPoint - 1 To 1 Step -1 If Not Mid$(NumberIn, cnt, 1) Like "[,]" Then WholePart = Mid$(NumberIn, cnt, 1) & WholePart Else CommaAdjuster = CommaAdjuster + 1 If (DecimalPoint - cnt - CommaAdjuster) Mod 3 Then NumberAsText = "Error - Improper use of commas" Exit Function End If 'If End If 'If Not Next 'For cnt End If 'If InStr End If 'If Not If Left$(WholePart, 1) Like "[+-]" Then NumberSign = IIf(Left$(WholePart, 1) = "-", "Minus ", "Plus ") WholePart = Mid$(WholePart, 2) End If '---------------------------------------- 'Begin code to assure decimal portion of 'check value is not inadvertently rounded '---------------------------------------- If bUseCheck = True Then
If Mid$(WholePart, cnt, 1) = "9" Then Mid$(WholePart, cnt, 1) = "0" Else Mid$(WholePart, cnt, 1) = CStr(Val(Mid$(WholePart, cnt, 1)) + 1) Exit For End If
Next
End If 'If WholePart End If 'If CurrValue End If 'If bUseCheck
'---------------------------------------- 'Final prep step - this assures number 'within range of formatting code below '---------------------------------------- If Len(WholePart) > 9 Then BigWholePart = Left$(WholePart, Len(WholePart) - 9) WholePart = Right$(WholePart, 9) End If
If Len(BigWholePart) > 9 Then
NumberAsText = "Error - Number too large" Exit Function
ElseIf Not WholePart Like String$(Len(WholePart), "#") Or _ (Not BigWholePart Like String$(Len(BigWholePart), "#") _ And Len(BigWholePart) > 0) Then
NumberAsText = "Error - Number improperly formed" Exit Function
End If '---------------------------------------- 'Begin creating the output string '----------------------------------------
'Very Large values TestValue = Val(BigWholePart)
If TestValue > 999999 Then CardinalNumber = TestValue \ 1000000 tmp = HundredsTensUnits(CardinalNumber) & "Quadrillion " TestValue = TestValue - (CardinalNumber * 1000000) End If
If TestValue > 999 Then CardinalNumber = TestValue \ 1000 tmp = tmp & HundredsTensUnits(CardinalNumber) & "Trillion " TestValue = TestValue - (CardinalNumber * 1000) End If
If TestValue > 0 Then tmp = tmp & HundredsTensUnits(TestValue) & "Billion " End If
'Lesser values TestValue = Val(WholePart)
If TestValue = 0 And BigWholePart = "" Then tmp = "Zero "
If TestValue > 999999 Then CardinalNumber = TestValue \ 1000000 tmp = tmp & HundredsTensUnits(CardinalNumber) & "Million " TestValue = TestValue - (CardinalNumber * 1000000) End If
If TestValue > 999 Then CardinalNumber = TestValue \ 1000 tmp = tmp & HundredsTensUnits(CardinalNumber) & "Thousand " TestValue = TestValue - (CardinalNumber * 1000) End If
If TestValue > 0 Then If Val(WholePart) < 99 And BigWholePart = "" Then bUseAnd = False tmp = tmp & HundredsTensUnits(TestValue, bUseAnd) End If
'If in dollar mode, assure the text is the correct plurality If bUseDollars = True Then
CentsString = HundredsTensUnits(DecimalPart)
If tmp = "One " Then tmp = tmp & "Dollar" Else tmp = tmp & "Dollars" End If
If Len(CentsString) > 0 Then
tmp = tmp & " and " & CentsString
If CentsString = "One " Then tmp = tmp & "Cent" Else tmp = tmp & "Cents" End If
2-> TWO
?? 不大懂
for i=97 to 122
debug.print StrConv(Chr(i), vbProperCase);
next 这个?
Dim Ones(1 To 19) As String
Dim Tens(2 To 9) As String
Dim tmp As Integer
Dim myWords As String If x > 999 Then Exit Function Ones(1) = "ONE"
Ones(2) = "TWO"
Ones(3) = "THREE"
Ones(4) = "FOUR"
Ones(5) = "FIVE"
Ones(6) = "SIX"
Ones(7) = "SEVEN"
Ones(8) = "EIGHT"
Ones(9) = "NINE"
Ones(10) = "TEN"
Ones(11) = "ELEVEN"
Ones(12) = "TWELVE"
Ones(13) = "THIRTEEN"
Ones(14) = "FOURTEEN"
Ones(15) = "FIFTEEN"
Ones(16) = "SIXTEEN"
Ones(17) = "SEVENTEEN"
Ones(12) = "EIGHTEEN"
Ones(19) = "NINETEEN" Tens(2) = "TWENTY"
Tens(3) = "THIRTY"
Tens(4) = "FORTY"
Tens(5) = "FIFTY"
Tens(6) = "SIXTY"
Tens(7) = "SEVENTY"
Tens(8) = "EIGHTY"
Tens(9) = "NINETY" tmp = x \ 100
If tmp Then
myWords = Ones(tmp) & " HUNDRED"
End If tmp = x Mod 100
If tmp < 20 Then
myWords = IIf(myWords > "", myWords & " AND ", "") & Ones(tmp)
Else
tmp = tmp \ 10
myWords = IIf(myWords > "", myWords & " AND ", "") & Tens(tmp)
tmp = x Mod 10
If tmp Then myWords = IIf(myWords > "", myWords & " ", "") & Ones(tmp)
End If
Number2Word = myWords
End FunctionPublic Function BigNumber2Word(ByVal x As Long) As String
Dim tmp As Long
Dim myWords As String If x > 999999999 Then Exit Function
tmp = x \ 1000000
If tmp Then
myWords = Number2Word(tmp) & " MILLION"
End If tmp = x Mod 1000000
If tmp Then
tmp = tmp \ 1000
If tmp Then
myWords = IIf(myWords > "", myWords & " ", "") & Number2Word(tmp) & " THOUNSAND"
End If
tmp = x Mod 1000
If tmp Then
myWords = IIf(myWords > "", myWords & " ", "") & Number2Word(tmp)
End If
End If
BigNumber2Word = myWords
End Function
'添加一个Label1,Index设为0
'添加一个Text1,Index设为0
'添加一个Command1,放在Form1的最低端
Option Explicit''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Copyright 0„81996-2006 VBnet, Randy Birch, All Rights Reserved.
' Some pages may also contain other copyrights by the author.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Distribution: You can freely use this code in your own
' applications, but you may not reproduce
' or publish this code on any web site,
' online service, or distribute as source
' on any media without express permission.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Module Name: NumberAsText
'Programmer: Frederick Rothstein
'Date Released: May 16, 1999
'Date Modified: August 20, 1999
'Copyright 1999 by Frederick N. Rothstein (All rights reserved)
'array to hold the various textual
'representations of a number
Private sNumberText() As StringPrivate Sub Form_Load() Dim cnt As Long
Dim nTop As Long
Dim nWidth As Long
For cnt = 0 To 24 '25 controls
If cnt > 0 Then
Load Text1(cnt)
Load Label1(cnt)
End If
With Label1(cnt)
.AutoSize = True
.Move 200, (300 * cnt) + nTop
Select Case cnt
Case 0, 5, 10, 15, 20
.Visible = False
Case 1, 6, 11, 16, 21
.Caption = "No Format"
.Visible = True Case 2, 7, 12, 17, 22
.Caption = "'And'"
.Visible = True
Case 3, 8, 13, 18, 23
.Caption = "'Check'"
.Visible = True
Case 4, 9, 14, 19, 24
.Caption = "'Dollar'"
.Visible = True
End Select
End With 'Label1
nWidth = 1200
With Text1(cnt)
Select Case cnt
Case 0
.Text = "342.79"
nTop = nTop + 200
Case 5
.Text = "1.14"
nTop = nTop + 200
Case 10
.Text = "1.9950072"
nTop = nTop + 200
Case 15
.Text = "+11432"
nTop = nTop + 200
Case 20
.Text = "-81131"
nTop = nTop + 200
Case Else
.Text = ""
nWidth = 5000
End Select .Move 1200, (300 * cnt) + nTop, nWidth
.Visible = True
End With 'Text1 Next cnt
With Command1
.Caption = "Convert"
.Move 1200, Text1(24).Top + Text1(24).Height + 200, 1500
End With
'preload sNumberText() with
'strings representing the possible
'textual representations of a number
Call BuildArray(sNumberText)
End Sub
Private Sub Command1_Click() Dim value As String value = Text1(0).Text
Text1(1).Text = NumberAsText(value, "")
Text1(2).Text = NumberAsText(value, "and")
Text1(3).Text = NumberAsText(value, "check")
Text1(4).Text = NumberAsText(value, "dollar") value = Text1(5).Text
Text1(6).Text = NumberAsText(value, "")
Text1(7).Text = NumberAsText(value, "and")
Text1(8).Text = NumberAsText(value, "check")
Text1(9).Text = NumberAsText(value, "dollar") value = Text1(10).Text
Text1(11).Text = NumberAsText(value, "")
Text1(12).Text = NumberAsText(value, "and")
Text1(13).Text = NumberAsText(value, "check")
Text1(14).Text = NumberAsText(value, "dollar") value = Text1(15).Text
Text1(16).Text = NumberAsText(value, "")
Text1(17).Text = NumberAsText(value, "and")
Text1(18).Text = NumberAsText(value, "check")
Text1(19).Text = NumberAsText(value, "dollar") value = Text1(20).Text
Text1(21).Text = NumberAsText(value, "")
Text1(22).Text = NumberAsText(value, "and")
Text1(23).Text = NumberAsText(value, "check")
Text1(24).Text = NumberAsText(value, "dollar")
End Sub
Private Sub BuildArray(sNumberText() As String) ReDim sNumberText(0 To 27) As String
sNumberText(0) = "Zero"
sNumberText(1) = "One"
sNumberText(2) = "Two"
sNumberText(3) = "Three"
sNumberText(4) = "Four"
sNumberText(5) = "Five"
sNumberText(6) = "Six"
sNumberText(7) = "Seven"
sNumberText(8) = "Eight"
sNumberText(9) = "Nine"
sNumberText(10) = "Ten"
sNumberText(11) = "Eleven"
sNumberText(12) = "Twelve"
sNumberText(13) = "Thirteen"
sNumberText(14) = "Fourteen"
sNumberText(15) = "Fifteen"
sNumberText(16) = "Sixteen"
sNumberText(17) = "Seventeen"
sNumberText(18) = "Eighteen"
sNumberText(19) = "Nineteen"
sNumberText(20) = "Twenty"
sNumberText(21) = "Thirty"
sNumberText(22) = "Forty"
sNumberText(23) = "Fifty"
sNumberText(24) = "Sixty"
sNumberText(25) = "Seventy"
sNumberText(26) = "Eighty"
sNumberText(27) = "Ninety"
End Sub
Private Function IsBounded(vntArray As Variant) As Boolean
'note: the application in the IDE will stop
'at this line when first run if the IDE error
'mode is not set to "Break on Unhandled Errors"
'(Tools/Options/General/Error Trapping)
On Error Resume Next
IsBounded = IsNumeric(UBound(vntArray))
End Function
Private Function HundredsTensUnits(ByVal TestValue As Integer, _
Optional bUseAnd As Boolean) As String Dim CardinalNumber As Integer
If TestValue > 99 Then
CardinalNumber = TestValue \ 100
HundredsTensUnits = sNumberText(CardinalNumber) & " Hundred "
TestValue = TestValue - (CardinalNumber * 100)
End If
If bUseAnd = True Then
HundredsTensUnits = HundredsTensUnits & "and "
End If
If TestValue > 20 Then
CardinalNumber = TestValue \ 10
HundredsTensUnits = HundredsTensUnits & _
sNumberText(CardinalNumber + 18) & " "
TestValue = TestValue - (CardinalNumber * 10)
End If
If TestValue > 0 Then
HundredsTensUnits = HundredsTensUnits & sNumberText(TestValue) & " "
End IfEnd Function
Optional AND_or_CHECK_or_DOLLAR As String) As String
Dim cnt As Long
Dim DecimalPoint As Long
Dim CardinalNumber As Long
Dim CommaAdjuster As Long
Dim TestValue As Long
Dim CurrValue As Currency
Dim CentsString As String
Dim NumberSign As String
Dim WholePart As String
Dim BigWholePart As String
Dim DecimalPart As String
Dim tmp As String
Dim sStyle As String
Dim bUseAnd As Boolean
Dim bUseCheck As Boolean
Dim bUseDollars As Boolean
'----------------------------------------
'Begin setting conditions for formatting
'----------------------------------------
'Determine whether to apply special formatting.
'If nothing passed, return routine result
'converted only into its numeric equivalents,
'with no additional format text.
sStyle = LCase(AND_or_CHECK_or_DOLLAR) 'User passed "AND": "and" will be added
'between hundredths and tens of dollars,
'ie "Three Hundred and Forty Two"
bUseAnd = sStyle = "and"
'User passed "DOLLAR": "dollar(s)" and "cents"
'appended to string,
'ie "Three Hundred and Forty Two Dollars"
bUseDollars = sStyle = "dollar"
'User passed "CHECK" *or* "DOLLAR"
'If "check", cent amount returned as a fraction /100
'i.e. "Three Hundred Forty Two and 00/100"
'If "dollar" was passed, "dollar(s)" and "cents"
'appended instead.
bUseCheck = (sStyle = "check") Or (sStyle = "dollar")
'----------------------------------------
'Check/create array. If this is the first
'time using this routine, create the text
'strings that will be used.
'----------------------------------------
If Not IsBounded(sNumberText) Then
Call BuildArray(sNumberText)
End If
'----------------------------------------
'Begin validating the number, and breaking
'into constituent parts
'----------------------------------------
'prepare to check for valid value in
NumberIn = Trim$(NumberIn)
If Not IsNumeric(NumberIn) Then 'invalid entry - abort
NumberAsText = "Error - Number improperly formed"
Exit Function Else 'decimal check
DecimalPoint = InStr(NumberIn, ".") If DecimalPoint > 0 Then 'split the fractional and primary numbers
DecimalPart = Mid$(NumberIn, DecimalPoint + 1)
WholePart = Left$(NumberIn, DecimalPoint - 1) Else
'assume the decimal is the last char
DecimalPoint = Len(NumberIn) + 1
WholePart = NumberIn
End If If InStr(NumberIn, ",,") Or _
InStr(NumberIn, ",.") Or _
InStr(NumberIn, ".,") Or _
InStr(DecimalPart, ",") Then NumberAsText = "Error - Improper use of commas"
Exit Function ElseIf InStr(NumberIn, ",") Then CommaAdjuster = 0
WholePart = "" For cnt = DecimalPoint - 1 To 1 Step -1 If Not Mid$(NumberIn, cnt, 1) Like "[,]" Then WholePart = Mid$(NumberIn, cnt, 1) & WholePart Else CommaAdjuster = CommaAdjuster + 1 If (DecimalPoint - cnt - CommaAdjuster) Mod 3 Then NumberAsText = "Error - Improper use of commas"
Exit Function End If 'If
End If 'If Not
Next 'For cnt
End If 'If InStr
End If 'If Not
If Left$(WholePart, 1) Like "[+-]" Then
NumberSign = IIf(Left$(WholePart, 1) = "-", "Minus ", "Plus ")
WholePart = Mid$(WholePart, 2)
End If
'----------------------------------------
'Begin code to assure decimal portion of
'check value is not inadvertently rounded
'----------------------------------------
If bUseCheck = True Then
CurrValue = CCur(Val("." & DecimalPart))
DecimalPart = Mid$(Format$(CurrValue, "0.00"), 3, 2)
If CurrValue >= 0.995 Then
If WholePart = String$(Len(WholePart), "9") Then
WholePart = "1" & String$(Len(WholePart), "0")
Else
For cnt = Len(WholePart) To 1 Step -1
If Mid$(WholePart, cnt, 1) = "9" Then
Mid$(WholePart, cnt, 1) = "0"
Else
Mid$(WholePart, cnt, 1) = CStr(Val(Mid$(WholePart, cnt, 1)) + 1)
Exit For
End If
Next
End If 'If WholePart
End If 'If CurrValue
End If 'If bUseCheck
'----------------------------------------
'Final prep step - this assures number
'within range of formatting code below
'----------------------------------------
If Len(WholePart) > 9 Then
BigWholePart = Left$(WholePart, Len(WholePart) - 9)
WholePart = Right$(WholePart, 9)
End If
If Len(BigWholePart) > 9 Then
NumberAsText = "Error - Number too large"
Exit Function
ElseIf Not WholePart Like String$(Len(WholePart), "#") Or _
(Not BigWholePart Like String$(Len(BigWholePart), "#") _
And Len(BigWholePart) > 0) Then
NumberAsText = "Error - Number improperly formed"
Exit Function
End If '----------------------------------------
'Begin creating the output string
'----------------------------------------
'Very Large values
TestValue = Val(BigWholePart)
If TestValue > 999999 Then
CardinalNumber = TestValue \ 1000000
tmp = HundredsTensUnits(CardinalNumber) & "Quadrillion "
TestValue = TestValue - (CardinalNumber * 1000000)
End If
If TestValue > 999 Then
CardinalNumber = TestValue \ 1000
tmp = tmp & HundredsTensUnits(CardinalNumber) & "Trillion "
TestValue = TestValue - (CardinalNumber * 1000)
End If
If TestValue > 0 Then
tmp = tmp & HundredsTensUnits(TestValue) & "Billion "
End If
'Lesser values
TestValue = Val(WholePart)
If TestValue = 0 And BigWholePart = "" Then tmp = "Zero "
If TestValue > 999999 Then
CardinalNumber = TestValue \ 1000000
tmp = tmp & HundredsTensUnits(CardinalNumber) & "Million "
TestValue = TestValue - (CardinalNumber * 1000000)
End If
If TestValue > 999 Then
CardinalNumber = TestValue \ 1000
tmp = tmp & HundredsTensUnits(CardinalNumber) & "Thousand "
TestValue = TestValue - (CardinalNumber * 1000)
End If
If TestValue > 0 Then
If Val(WholePart) < 99 And BigWholePart = "" Then bUseAnd = False
tmp = tmp & HundredsTensUnits(TestValue, bUseAnd)
End If
'If in dollar mode, assure the text is the correct plurality
If bUseDollars = True Then
CentsString = HundredsTensUnits(DecimalPart)
If tmp = "One " Then
tmp = tmp & "Dollar"
Else
tmp = tmp & "Dollars"
End If
If Len(CentsString) > 0 Then
tmp = tmp & " and " & CentsString
If CentsString = "One " Then
tmp = tmp & "Cent"
Else
tmp = tmp & "Cents"
End If
End If
ElseIf bUseCheck = True Then
tmp = tmp & "and " & Left$(DecimalPart & "00", 2)
tmp = tmp & "/100"
Else
If Len(DecimalPart) > 0 Then
tmp = tmp & "Point"
For cnt = 1 To Len(DecimalPart)
tmp = tmp & " " & sNumberText(Mid$(DecimalPart, cnt, 1))
Next
End If 'If DecimalPart
End If 'If bUseDollars
'done!
NumberAsText = NumberSign & tmp
End Function
good Luck!
“算法就是力量;算法就是一切。”to 2004kingbear() :
你自己测试一下吧。
replace 转换函数不就可以咯!!
请LZ 和我做例题exe内包含 2个 控件 text1 *1 command1*1代码:
Private Sub Command1_Click()
Text1 = Replace(Text1, "1", "One ")
Text1 = Replace(Text1, "2", "Two ")
Text1 = Replace(Text1, "3", "three ")
Text1 = Replace(Text1, "4", "four ")
Text1 = Replace(Text1, "5", "file ")
Text1 = Replace(Text1, "6", "six ")
Text1 = Replace(Text1, "7", "seven ")
Text1 = Replace(Text1, "8", "eight ")
Text1 = Replace(Text1, "9", "nine ")
Text1 = Replace(Text1, "0", "zero ")
end sub 程序效果 在text1内输入的数字 全部变成英文 现在明白了吧! 可以根据自己需要修改上面底码[不知道英文写对了没...] 比如LZ 说的 数字转英文大写 改上面英文就OK了 给分!!给分!!*******************************
cike技术交流群 16874787
你只有一个山峰(金字塔 or 三角形),信 誉 值倒降到74分。Reply off line.不再回答你的贴了。
LZ问题解决了吗?没解决,告诉大家一声,大家再帮你想。
不就解决了!