论坛链接:club.excelhome.net

培训中心链接:t.excelhome.net

 

Excel Home VBA中级班(11207班)小结

第四课时自定义函数

讲师:ggsmart

助教:swabeleroy

学员:xixi2011

本节大纲:

  • 什么是自定义函数
  • 为什么要编写自定义函数
  • 如何编写自定义函数

第一章 中级班之终体会

    转眼班就要结束了,在小结中学习,在学习中小结,一下都是我信奉的真理,今天又好好研读了一下正则表达式的一切。写完了正则的小结,感觉真的很不错。明天继续奋斗我的字典小结了。整个中级班的课程下来,中间两节相对课外题目来说,都比较简单。开头的一些基本知识点的介绍,确实,如果不细纠很容易搞错。结尾的这个自定义函数,也是在学习的过程中,比较容易碰到的,需要重点学习的内容。

第二章 自定义函数

  1. 什么是自定义函数

要想理解什么是自定义函数,先得理清楚函数的概念。什么是函数呢?函数就是预定的一个计算公式,可以快速地完成一个特定的计算。如sum啊,if这些。

有些函数只有返回值,没有传参,比如date,有些是既有参数,又有返回值,比如说sum。这些都是各种各样的函数。

而自定义函数是什么呢?就是用户自己编写的,类似的函数。像sum函数,我们也可以自己编写,像date函数,也可以。

一个自定义函数就是一个function过程,编写一个function过程就等于编写了一个自定义函数。

  1. 为什么要编写自定义函数

人们的需求,总是在不断地扩充当中,不可能永远不变。而有很多问题,现有的情况很难解决,或者无法解决怎么办?我们可以用自定义函数来实现。

自定义参数,自定义返回值,让Excel更加人性化。

人们总在不断地寻求简化工作的方法。而这些方法,就知道自己去创造许多东西。当一个功能你经常使用到的时候,将它弄成自定义函数,以后就可以很方便地重复利用了。

  1. 如何编写自定义函数

1、新插入一个标准模块

方法一:执行"插入"->"模块"菜单命令

方法二:在工程资源管理器中,单击右键,执行:"插入"->"模块"右键菜单命令

2、插入一空的Function过程

方法一:执行"插入"->"函数"菜单命令,通过"添加过程"对话框完成。

方法二:在代码窗口动输入完成。

3、在FunctionEnd Function之间写入相应的代码。

4、将计算结果返回给过程名。

5、如果需要,可以通过宏对话框为自定义函数添加函数说明。

  1. Function过程语法解析

声明自定义函数的语法如下:

[Public | Private | Friend] [Static] Function 函数名([参数]) [As 数据类型]

    [语句块]

    [函数名=过程结果]

    [Exit Function]

    [语句块]

    [函数名=过程结果]

End Function

其语法与Sub过程基本一致,唯一区别是要把过程结果返回给函数名。

可以在工作表中使用自定义函数,也可以在过程中调用自定义函数。

自定义函数有自己的作用域,可以给自定义函数设置参数。

另外,谈到函数就不能不说它的"刷新"性能,即在工作表中使用函数时,当其他区域的数据更新时,当前单元格的函数是否重新运算,专业术语称之为"易失性"。

用户定义的函数是否有易失性,可以通过Application的Volatile方法设置。

该方法的作用是无论何时在工作表的任意单元格中进行计算,函数都必须重新进行计算。即工作表刷新时调用函数再运算一次,从而实现数据更新,使公式结果同步。

另外,function过程可带的参数,最多为255个。

  1. 怎样保存自己编写的函数

怎样保存自己编写的函数?让它可以在不同的工作薄里使用,可以在不同的电脑上使用?

1、将自定义的函数保存在加载宏文件中.

2、加载这个加宏.

  1. 自定义函数举例

首先,举一个非常简单的例子。

我们需要获得当前工作簿的名字。这时候,怎么办呢?

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能够用到的东西,都用了一个遍,可谓深也。真的是无比充实的一个月。也觉得有点小累,等学好一课,确实应该休息一下了。

 

posted on 2012-10-07 23:24  偶是一只IT小小鸟  阅读(529)  评论(0编辑  收藏  举报