学习资源:《Excel VBA从入门到进阶》第30集 by兰色幻想
在VBA中有VBA函数,我们还可以调用工作表函数,我们能不能自已编写函数呢?
可以的!
一、自定义函数的结构
Function 函数名称(参数1,参数2....)
代码
函数名称=返回的值或数组
End Function
二、编写自定义函数
举几个例子:
1 取得工作表总个数的自定义函数
编写原理:工作表属性
Function shcount()
shcount = Sheets.Count
End Function
2 取得单元格显示值的自定义函数
编写原理:单元格属性
Function getv(rg As Range)
getv = rg.Text
End Function
3 截取字符串的函数
编写原理:利用数组和Split函数
Function jiequ(sr As String, fh As String, wz As Integer)
Dim Arr
Arr = Split(sr, fh)
jiequ = Arr(wz - 1)
End Function
4 提取不重复值的个数
编写原理:利用字典key的唯一性
Function 不重复个数(rg As Range)
Dim d, Arr, ar
Arr = rg
Set d = CreateObject("scripting.dictionary")
For Each ar In Arr
d(ar) = ""
Next ar
不重复个数 = d.Count
End Function
三、使用自定义函数
1.让自定义函数在所有工作簿中使用
把含有自定义函数的文件另存为加截宏,然后通过开发工具-加截宏-浏览找到这个文件-确定。
3 给自定义函数添加说明
拿上面写的截取字符串的函数做例子:
Function jiequ(sr As String, fh As String, wz As Integer)
Dim Arr
Arr = Split(sr, fh)
jiequ = Arr(wz - 1)
End Function
操作:开发工具-宏-在宏名输入框中输入自定义函数名“jiequ”-点击选项-输入说明-确认,关闭
这样就能在插入函数中看到它的说明了。
4 给自定义函数分类
还是以上面为例,jiequ函数只能在全部类别中找到。
可以到VBE里写一段程序,把它放到统计类别里。
Sub 分类()
Application.MacroOptions "jiequ", Category:=4
End Sub
注:
0 是全部
1 财务
2 日期和时间
3 数学和三角
4 统计
5 查找和引用
6 数据库
7 文本
8 逻辑
9 信息