当前位置:编程学习 > VB >>

小程序大家帮忙改改?

程序中汉字的随机出现了问题,生成的文本中钱的个数和我要求的个数不一样? 
可能是随机的地方的程序出现了问题?(随机的汉字地方能用调用的最好,看的清楚) 
高手帮我改改? 
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 ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,