高分求用VB遍写的一个实用小程序

来源:百度知道 编辑:UC知道 时间:2024/05/13 08:17:06
问题的提出:现在各种办公软件用得很多,但尽管这样,EXCEL在企业办公上仍然被广泛应用着,比如做统计报表,做产品清单,做合同等等。当做合同时,我们可以用EXCEL自动生成合同金额,但这金额是阿拉伯数字。而合同中往往要写上金额的中文大写。怎么办,许多人只好用打字输入把中文大写金额填入。如果能制作一个宏(EXCEL中的宏是用VB编写的),读取阿拉伯数字,输出相应的中文大写,那就能给工作带来方便。
本题要求:用VB遍写一个EXCEL的宏,功能是读取阿拉伯数字,输出相应的中文大写。要求当宏执行时,在EXCEL表的A1位读取阿拉伯数字,宏执行结束前,将相应的中文大写输出到A2位。
本程序是一个很小的程序,在百度知道里绝对可以传上来。请不要作无用的回答,不要只说些怎么怎么做的话而不提供程序,也不要提供任何程序网址的链接。我们要的是能用的程序。能不能用,只要把你的程序加到EXCEL里,一试就知道。不能用的东西不要传上来。
以上VB应为VBA,
大家都是实力很强的大虾,难分高下,现把题目稍微扩大一点:
某海鲜供应商(业务是向饭店宾馆送海鲜)每月底要向每个客户传真催帐单,现他们的电脑上有一个名为"客户欠帐清单"的EXCEL文件,打开这文件,其中有一个名为"五月"的sheet,其中的内容如下:
客户 欠款 日期
张三 2360.00 五月一日
张三 1400.00 五月二日
李四 4000.50 五月三日
张三 2000.00 五月二十日
李四 4000.00 五月二十三日
当然,客户可以有很多,且可以随时改变,为简化,在这就写两个吧.
要求做一个宏(放在"客户欠帐清单"文件里),运行后将自动生成另一个名为"五月催帐单"的EXCEL文件,这文件有n个Sheet(n=客户数),各Sheet的名称就是客户名(这里就是"张三","李四",两个Sheet)
打开Sheet"张三",内容如下:
ABC海鲜供应商
TO:张三

帮你写了个宏,执行时,完全满足你的要求。
第三次改了一下,还有什么问题,欢迎提出:
Sub Zh()
Dim S, i As Integer, K(), E As String, Sw As Integer, U As String
d = Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖")
w = Array("", "万", "亿")
R = Range("A1").Value
If InStr(R, ".") <> 0 Then
U = Right(R, Len(R) - InStr(R, "."))
Do While Len(U) > 2
U = CStr((Val(U) + 5) \ 10)
Loop
R = Int(R)
End If
If Not IsNumeric(R) Then Exit Sub
i = Len(Int(R))
i = i \ 4
ReDim K(i)
For i = UBound(K) To LBound(K) + 1 Step -1
K(i) = Right(R, 4)
E = T(K(i)) + w(Sw) + E
Sw = Sw + 1
R = Left(R, Len(R) - 4)
Next i
K(i) = R
If K(i) <> "" Then
E = T(K(i)) + w(Sw) + E
End If
E = E + "元"
If