小程序大家帮忙改改?
程序中汉字的随机出现了问题,生成的文本中钱的个数和我要求的个数不一样?可能是随机的地方的程序出现了问题?(随机的汉字地方能用调用的最好,看的清楚)
高手帮我改改?
Option Explicit
Dim i&, j&, h&, ma&, u&, NumInterval&, tmpstr$(), s, jq$
Private Function CCh(N1) As String
Select Case N1
Case 0
CCh = "零"
Case 1
CCh = "壹"
Case 2
CCh = "贰"
Case 3
CCh = "叁"
Case 4
CCh = "肆"
Case 5
CCh = "伍"
Case 6
CCh = "陆"
Case 7
CCh = "柒"
Case 8
CCh = "捌"
Case 9
CCh = "玖"
End Select
End Function
Public Function ChMoney(N1) As String
Dim tMoney As String
Dim lMoney As String
Dim tn '小数位置
Dim s1 As String '临时STRING 小数部分
Dim s2 As String '1000 以内
Dim s3 As String '10000
Dim ST1 As String
Dim t1 As String
If N1 = 0 Then
ChMoney = "谢谢你"
Exit Function
End If
If N1 < 0 Then
ChMoney = "负" + ChMoney(Abs(N1))
Exit Function
End If
tMoney = Trim(Str(N1))
tn = InStr(tMoney, ".") '小数位置
s1 = ""
If tn <> 0 Then
ST1 = Right(tMoney, Len(tMoney) - tn)
If ST1 <> "" Then
t1 = Left(ST1, 1)
ST1 = Right(ST1, Len(ST1) - 1)
If t1 <> "0" Then
s1 = s1 + CCh(Val(t1)) + "角"
End If
If ST1 <> "" Then
t1 = Left(ST1, 1)
s1 = s1 + CCh(Val(t1)) + "分"
End If
End If
ST1 = Left(tMoney, tn - 1)
Else
ST1 = tMoney
End If
s2 = ""
If ST1 <> "" Then
t1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) - 1)
s2 = CCh(Val(t1)) + s2
End If
If ST1 <> "" Then
t1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) - 1)
If t1 <> "0" Then
s2 = CCh(Val(t1)) + "拾" + s2
Else
If Left(s2, 1) <> "零" Then s2 = "零" + s2
End If
End If
If ST1 <> "" Then
t1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) - 1)
If t1 <> "0" Then
s2 = CCh(Val(t1)) + "佰" + s2
Else
If Left(s2, 1) <> "零" Then s2 = "零" + s2
End If
End If
If ST1 <> "" Then
t1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) - 1)
If t1 <> "0" Then
s2 = CCh(Val(t1)) + "仟" + s2
Else
If Left(s2, 1) <> "零" Then s2 = "零" + s2
End If
End If
s3 = ""
If ST1 <> "" Then
t1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) - 1)
s3 = CCh(Val(t1)) + s3
End If
If ST1 <> "" Then
t1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) - 1)
If t1 <> "0" Then
s3 = CCh(Val(t1)) + "拾" + s3
Else
If Left(s3, 1) <> "零" Then s3 = "零" + s3
End If
End If
If ST1 <> "" Then
t1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) - 1)
If t1 <> "0" Then
s3 = CCh(Val(t1)) + "佰" + s3
Else
If Left(s3, 1) <> "零" Then s3 = "零" + s3
End If
End If
If ST1 <> "" Then
t1 = Right(ST1, 1)
ST1 = Left(ST1, Len(ST1) - 1)
If t1 <> "0" Then
s3 = CCh(Val(t1)) + "仟" + s3
End If
End If
If Right(s2, 1) = "零" Then s2 = Left(s2, Len(s2) - 1)
If Len(s3) > 0 Then
If Right(s3, 1) = "零" Then s3 = Left(s3, Len(s3) - 1)
s3 = s3 & "万"
End If
ChMoney = IIf(s3 & s2 = "", s1, s3 & s2 & "元" & s1)
End Function
Private Sub Command1_Click()
s = ArrangeNum(100, 10)
Open "c:\Documents and Settings\Administrator\桌面\test.txt" For Output As #1
Me.Cls
For i = 1 To UBound(s)
Print s(i)
Print #1, s(i)
Next i
Close #1
Me.Caption = "保存完成"
End Sub
Public Function ArrangeNum(MaxVal&, MaxRow&) As String()
Dim jp As String
Dim A(100) As Single
Dim g As Single
Dim temp As Single
Dim R As Single
For g = 1 To 3 '3000的3个
A(g) = 3000
Next
For g = 4 To 6 '400的3个
A(g) = 400
Next
For g = 7 To 8 '100的2个
A(g) = 100
Next
For g = 9 To 12 '50的4个
A(g) = 50
Next
For g = 13 To 17 '20的5个
A(g) = 20
Next
For g = 18 To 27 '5的10个
A(g) = 5
Next
NumInterval = MaxVal \ MaxRow '每Column增加的间隔
Randomize
For i = 1 To MaxRow
ReDim Preserve tmpstr$(i)
For j = i To MaxVal Step MaxRow
DoEvents
h = MaxVal + 1 - j
For g = 1 To UBound(A) * 20
R = Fix(Rnd() * 100 + 1)
temp = A(g Mod 20)
A(g Mod 20) = A(R)
A(R) = temp
Next
jq = ChMoney(A(R))
If LenB(jq) < 6 Then jq = jq & Space(6 - LenB(jq))
tmpstr$(i) = tmpstr$(i) & Format(Str(h), "00000000") & " " & jq & " "
Next j
Next i
ArrangeNum = tmpstr()
End Function
--------------------编程问答-------------------- 没看明白你想干什么 。 --------------------编程问答-------------------- 怎么又发一帖.
补充:VB , 基础类