以下是由浅到更浅解说
为了看的更清楚,把11行 拆成15行,
Function rmbb(M) 'Function:固定格式,不可改。rmbb:自定义函数的名称,可改 m:指要算的数字,可以是引用 以 12.34为例 y = Int(Abs(M)) 'y:指元 12.34截尾 得到 12 j = Round(Abs(M) - y, 2) 'j:指角 12.34-12 得到 0.34 因BUG,有时应为0.90时却得到0.899999987所以加上round f = (j * 10 - Int(j * 10)) / 10 'f:指分 j*10=3.4 j*10截尾后=3 (3.4-3)/10=0.04 因要截尾操作所以先*10再/10a = Application.Text(y, "[DBNum2]") 'a:指元的大写 Text是工作表函数,在此引用要加"Application." 得到 壹拾贰 b = Application.Text(Int(j * 10), "[DBNum2]") 'b:指角的大写 *10后再截尾 得到 叁 c = Application.Text(Round(f * 100, 0), "[DBNum2]") 'c:指分的大写 *100后再截尾,因BUG有时应为1时却得到0.9999999, '所以加上round,得到 肆 d = "元" 'd、e、g 在正常情况下分别= 元、角、分 e = "角" '正常情况是指 元、角、分都有,例:12.34 g = "分" If j < 0.1 Then e = "" '非正常情况:无角无分(12.00)、有角无分(12.30)、无角有分(12.04) c、b、e、g对应显示的字符 If f < 0.01 Then g = "整" '理论上应写做 f=0 还是BUG原因 有时会得到0.000000014056 所以写做 f<0.01 If f < 0.01 Then c = "" If j = 0 Then b = "" If M < 0 Then z = "负" Else z = "" '正负判断,个人认为这条无所谓,删了就行,好像没人会写负多少多少钱 rmbb = z & a & d & b & e & c & g '这就好理解了,把这些合起来得到 壹拾贰元叁角肆分
'使用方法:把这串代码复制到模块中就行了,说明文字会变绿色,可以删除的。例:A1格中有数字12.34,在B1格中输入"=rmbb(a1)" 'rmbb,y,j,f,a,b,c,d,e,g 这些都是自设的代码,可根据习惯修改 End Function
新手试作一下,1,如何把15行,改成11行
2,此函数输入0.34 显示 零元叁角肆分 如何改成 叁角肆分
能把它搞定,可说是入门了
[此贴子已经被作者于2006-1-2 0:28:55编辑过] |