EXCEL VBA自定义函数
您应该是高手了.谈不上什么建议,希望您的代码风格尽量规范些,比如变量声明,变量命名,这对您以后的提高,特别是如果要写大型程序时是很重要的.
您现在的代码已经很好.
下面是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]")&"分","整")))
参与评论- 相关内容
- 最近更新
- ·2GB多的Office 2007跟几百MB的有..
- ·Office打开有图片问题
- ·如何让箭头位于线段(曲线)的中..
- ·操作权限管理的实质
- ·EXCEL如何设置?
- ·无法删除办公软件??
- ·word里工具栏,常用和格式的位置
- ·EXCEL里打印当前页怎么不见了
- ·Excel里面的IF函数具体是什么
- ·安装office办公软件
添加到百度搜藏