您的位置 电脑知识爱好者 >> 软件知识 >> EXCEL VBA自定义函数

EXCEL VBA自定义函数

电脑知识爱好者互联网本站整理2007-8-29 16:06:54
知识重点:财务、会计工作中,经常需要将用阿拉伯数字表示的货币转换为大写中文数字表示,并且要求符合中文语法。以下VBA自定义函数可以解决这个问题,在EXCEL 2003中调试通过,使用功能也正常,但并不表示..

您应该是高手了.谈不上什么建议,希望您的代码风格尽量规范些,比如变量声明,变量命名,这对您以后的提高,特别是如果要写大型程序时是很重要的.

您现在的代码已经很好.

下面是EXCELHOME的ldy888朋友写的,特点是巧妙的运用了Application.Text,比较简练,给您参考一下:

Function ldy888(M)

y = Int(Round(100 * Abs(M)) / 100)

j = Round(100 * Abs(M) + 0.00001) - y * 100

f = Round((j / 10 - Int(j / 10)) * 10)

a = IIf(y < 1, "", Application.Text(y, "[DBNum2]") & "元")

b = IIf(j > 9.4, Application.Text(Int(j / 10), "[DBNum2]") & "角", IIf(y < 1, "", IIf(f > 0.4, "零", "")))

c = IIf(f < 1, "整", Application.Text(Round(f, 0), "[DBNum2]") & "分")

ldy888 = IIf(Abs(M) < 0.005, "", IIf(M < 0, "负" & a & b & c, a & b & c))

End Function


  • 没测试,辛苦了。。。

    想跟你谈谈我的想法:

    1、代码太长,两个函数来完成这个工作吗?综合一下啊。

    2、直接写成一个模块,整个功能都含进去,在EXCEL中用快捷键直接完成不是很好吗?

    3、参考以前的高手,他们设计了一个足够长的公式,有时间也看看:

    =IF(ROUND(A1,2)=0,"",IF(ROUND(ABS(A1),2)>=1,TEXT(INT(ROUND(ABS(A1),2)),"[DBNum2]")&"元","")&IF(RIGHT(TEXT(A1,".00"),2)*1=0,"整",IF(RIGHT(TEXT(A1,".00"),4)*1>=1,IF(RIGHT(TEXT(A1,".00"),2)*1>9,"","零"),IF(ROUND(ABS(A1),2)>=1,"零",""))&IF(RIGHT(TEXT(A1,".00"),2)*1>9,TEXT(LEFT(RIGHT(TEXT(A1,".00"),2)),"[DBNum2]")&"角","")&IF(RIGHT(TEXT(A1,".00"))*1>0,TEXT(RIGHT(TEXT(A1,".00")),"[DBNum2]")&"分","整")))

    参与评论
    相关内容
  • 关于我们 | 隐私政策 | 站点地图 | 站长博客|京ICP备07025396号
    添加到百度搜藏 添加到百度搜藏 电脑知识爱好者Copyright ?2006-2008版权所有 我要啦免费统计