|
本帖最后由 opiona 于 2016-5-24 16:18 编辑
欢迎大家将常用的自定义函数放上来
或者需要什么样子的函数,发上来
'函数在EXCEL公式,VBA,包括其他变成语言都是重要组成部分
'工作表内的公式,大家都会用,其实自定义函数和它是一样的
'就是自己写一个函数,输入几个参数,返回需要的值,来实现特定的功能。
'函数和过程的区别:函数能返回值,过程不能,过程就像阉割版的函数
'
'自定义函数的好处:
'1、将复杂的问题简单化,碰到相同的,或类似的问题,修改参数就OK了
'2、可以重复使用,不用每用一次都写大段的代码,直接一句函数和参数就可以了
'3、需要修改时,只修改函数内的代码即可,不用再每一个使用的地方都修改
'4、自定义函数可以在工作表中像自带公式一样使用,也可以在窗体过程中调用
'//建议:将经常用到的固定代码,写成自定义函数,这样会简化代码,加快开发速度
'先来一个数字大写的例子:
'工作表公式:B1=SUBSTITUTE(SUBSTITUTE(TEXT(TRUNC(FIXED(A1)),"[dbnum2]G/通用格式元;负[dbnum2]G/通用格式元;"&IF(A1>-0.5%,,"负"))&TEXT(RIGHT(FIXED(A1),2),"[dbnum2]0角0分;;"&IF(ABS(A1)>1%,"整",)),"零角",IF(ABS(A1)<1,,"零")),"零分","整")
'在工作表中使用: B1 = DX(A1) '//如果一百个地方写这个公式,这样就简单许多
'在VBA代码中调用:msgbox DX(123.06)
'在窗体过程调用:textbox1.text=DX(123.06) 或者:textbox1.text=DX(textbox2.text)
'自定义函数如下:写在某一个模块中
- '********函数名: DX 是函数名
- '********返回值: String类型
- '********参数名: M double类型
- Public Function DX(ByVal M As Double) As String
- Dim TEMP As String '//最好每个变量都先声明,以免在要求声明的代码中出错
- If Abs(M) < 0.005 Then '//函数代码正文
- TEMP = ""
- Else
- TEMP = Replace(Replace(Replace(Join(Application.Text(Split(Format(M, " 0. 00")), Split("@ [DBNum2];;0 [>9][dbnum2]圆0角0分;[=0]圆整;[dbnum2]圆零0分")), ""), "零分", "整"), "0圆零", ""), "0圆", "")
- End If
- DX = TEMP '//指定函数返回值
- End Function
复制代码
|
评分
-
2
查看全部评分
-
|