在论坛找到这个代码,只有10行,精简!虽然不认负数,金额也有限制。但所用语句比我的高明,适用的方向很广。有很多地方不懂。求高手指点,最好能像我那样做 由浅向更浅 的说明。多谢了。
为方便区分学习,把原宏名Ntoc 改为 rmbn
Function rmbn(n) 'n as single '原创 渴死的鱼 hanlin2020@hotmail.com '改编 inRm inrm@263.net Const cNum = "零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分" Const cCha = "零仟零佰零拾零零零零零亿零万零元亿万零角零分零整-零零零零零亿万元亿零整整" rmbn = "" sNum = Trim(Str(Round(n, 2) * 100)) '在这里用Round()四舍五入 For i = 1 To Len(sNum) '逐位转换 rmbn = rmbn + Mid(cNum, (Mid(sNum, i, 1)) + 1, 1) + Mid(cNum, 26 - Len(sNum) + i, 1) Next For i = 0 To 11 '去掉多余的零 rmbn = Replace(rmbn, Mid(cCha, i * 2 + 1, 2), Mid(cCha, i + 26, 1)) Next End Function
|