论坛链接:club.excelhome.net
培训中心链接:t.excelhome.net
Excel Home VBA中级班(11207班)小结
第四课时自定义函数
讲师:ggsmart
助教:swabe、leroy
学员:xixi2011
本节大纲:
-
什么是自定义函数
-
为什么要编写自定义函数
-
如何编写自定义函数
第一章 中级班之终体会
转眼班就要结束了,在小结中学习,在学习中小结,一下都是我信奉的真理,今天又好好研读了一下正则表达式的一切。写完了正则的小结,感觉真的很不错。明天继续奋斗我的字典小结了。整个中级班的课程下来,中间两节相对课外题目来说,都比较简单。开头的一些基本知识点的介绍,确实,如果不细纠很容易搞错。结尾的这个自定义函数,也是在学习的过程中,比较容易碰到的,需要重点学习的内容。
第二章 自定义函数
-
什么是自定义函数
要想理解什么是自定义函数,先得理清楚函数的概念。什么是函数呢?函数就是预定的一个计算公式,可以快速地完成一个特定的计算。如sum啊,if这些。
有些函数只有返回值,没有传参,比如date,有些是既有参数,又有返回值,比如说sum。这些都是各种各样的函数。
而自定义函数是什么呢?就是用户自己编写的,类似的函数。像sum函数,我们也可以自己编写,像date函数,也可以。
一个自定义函数就是一个function过程,编写一个function过程就等于编写了一个自定义函数。
-
为什么要编写自定义函数
人们的需求,总是在不断地扩充当中,不可能永远不变。而有很多问题,现有的情况很难解决,或者无法解决怎么办?我们可以用自定义函数来实现。
自定义参数,自定义返回值,让Excel更加人性化。
人们总在不断地寻求简化工作的方法。而这些方法,就知道自己去创造许多东西。当一个功能你经常使用到的时候,将它弄成自定义函数,以后就可以很方便地重复利用了。
-
如何编写自定义函数
1、新插入一个标准模块
方法一:执行"插入"->"模块"菜单命令
方法二:在工程资源管理器中,单击右键,执行:"插入"->"模块"右键菜单命令
2、插入一空的Function过程
方法一:执行"插入"->"函数"菜单命令,通过"添加过程"对话框完成。
方法二:在代码窗口动输入完成。
3、在Function与End Function之间写入相应的代码。
4、将计算结果返回给过程名。
5、如果需要,可以通过宏对话框为自定义函数添加函数说明。
-
Function过程语法解析
声明自定义函数的语法如下:
[Public | Private | Friend] [Static] Function 函数名([参数]) [As 数据类型]
[语句块]
[函数名=过程结果]
[Exit Function]
[语句块]
[函数名=过程结果]
End Function
其语法与Sub过程基本一致,唯一区别是要把过程结果返回给函数名。
可以在工作表中使用自定义函数,也可以在过程中调用自定义函数。
自定义函数有自己的作用域,可以给自定义函数设置参数。
另外,谈到函数就不能不说它的"刷新"性能,即在工作表中使用函数时,当其他区域的数据更新时,当前单元格的函数是否重新运算,专业术语称之为"易失性"。
用户定义的函数是否有易失性,可以通过Application的Volatile方法设置。
该方法的作用是无论何时在工作表的任意单元格中进行计算,函数都必须重新进行计算。即工作表刷新时调用函数再运算一次,从而实现数据更新,使公式结果同步。
另外,function过程可带的参数,最多为255个。
-
怎样保存自己编写的函数
怎样保存自己编写的函数?让它可以在不同的工作薄里使用,可以在不同的电脑上使用?
1、将自定义的函数保存在加载宏文件中.
2、加载这个加宏.
-
自定义函数举例
首先,举一个非常简单的例子。
我们需要获得当前工作簿的名字。这时候,怎么办呢?
Public Function GetWorkbookName()
GetWorkbookName = ThisWorkbook.Name
End Function
这样,在工作簿中调用,GetWorkbookName就可以获得工作簿的名称。
然后再来举一个十分常用的例子,统计单元格颜色。
一般情况下,遇到这个问题,解决方法有两个。
宏表函数
1、宏表函数,需要自定义名称。
Get.Cell(63,Sheet1!A1),类似这样的,获取颜色。不过具体就不说了,网上有一大堆资料。然后获取了颜色号之后,再进行统计
2、自定义函数。
自定义函数也很常用
Function countcolor(Rng As Rang, cel As Range) ' 第一个参数是区域,第二个参数是单元格的颜色
Dim Cindex as Integer
Cindex = Cel.Interior.ColorIndex
Dim n As Range
For Each n In Rng
If n.interior.ColorIndex = Cindex then
Countcolor = countcolor+1
End If
Next
End Function
第四章 视频总结
Function过程即自定义函数,根据工作需要可以开发自己专用的函数。
对于函数的运算速度,内部集成的工作表函数,一定快于用户自己定义的函数,在内部函数能够完成的情况下,尽量使用工作表函数;如果工作表函数无法完成,或者需要非常长的数组公式才能完成的情况下,可以开发专用的自定义函数。
自定义函数的用途还是挺多的说。
第五章 对这课的小结
整个课程都已经结束了,回顾整个课程,真的是在VBA的深潭中走了一回。从最开始的数组到数组嵌套,字典,字典数组嵌套,字典嵌套,SQL,正则。一般VBA能够用到的东西,都用了一个遍,可谓深也。真的是无比充实的一个月。也觉得有点小累,等学好一课,确实应该休息一下了。