视图在哪里 浏览器视图在哪里

抒情君 3

对于VBA写了两章的内容了,干货似乎不多,这也没办法,很多东西都是先了解一下理论,然后进行实务操作,这就是先是读书甭管自己懂不懂,先背了再说,等以后真的需要用了,也能知道个大概。当然这些理论对于VBA来说可能并不一定要完全了解,因为VBA可以说是拿来就可以用,但是程序本身的理论是相通的,VBA当然也适合这套理论,所以了解一下之后对于你想学习其他编程语言来说就变得简单了。

一切皆为对象

这里说的对象不是谈恋爱的对象,英语对应的词汇叫Object。其实吧英语单词和中文词汇一样,很多都不是只有一个意思,大部分都能衍生出去,所以对于程序上专用语言的翻译如果你通过中文去理解可能一时半会理解不了,我当时就是通过中文去理解概念有时候会很难理解。

程序里面的对象,你可以理解为对于一个细胞而言,细胞中的细胞核等等物质都是对象,他们组成了细胞,对于一个人而言每一个细胞都是对象他们组成了一个人,对于一个社会来说每一个人都是对象,他们组成了社会。总而言之,对象可以小到非常小,也可以大到非常大,所以说一切皆为对象。那么EXCEL中的每一个EXCEL都是对象,每一个SHEET也是对象,每一个单元格更是对象,对于WINDOWS来说EXCEL就是一个对象。

这话说的其实也是废话,大千世界的组成都是这样,小可以无限小,大可以无限大,这么说下去是没底的,我也不想凑字数了。那么关键的是什么呢,那就是对象他总有类型或者说类别又或者说每个对象都有区别于其他对象的特点吧,反正尽管大家都叫对象,但未必是同一种类型的。所以就引出了我接下去要说的话题,类型。

了解类型

所谓类型,就不得不说人类天生的能力,就是分类。既然对象是组成大千世界的元素,那他的数量是非常庞大的,就像天上的星星不知凡几,可是人类会对他们进行分类,比如恒星、行星、卫星等等。程序的世界也是一样,对象很多,但是类型是固定的。好吧,其实你大概也看出来的,对象是比较抽象的说法,而类型就是一个具体的说法了,所以对象你想了解就了解,不了解…其实也没啥不了解的,很简单对吧。

每一门编程语言都设置了大量的类型,每一种类型都有自己的特点,当你需要什么类型对象的时候,可以直接拿来用。那一定会问如果没有我需要的类型怎么办,那无非就是自己创造一个呗,或者在已经有的类型中添加自己需要的东西,从而变成一个新的类型。

因为类型也就是对象,他本身自然也是被各个更小的对象组成的。这些更小的对象,总的来说分为属性和方法。以人作为案列,属性相当于人的身高、体重等等这些比较具体的内容,而方法就理解为人的行为,比如吃喝拉撒。

那么这里提到了的方法就是我之前那一章所提到的Sub和Function,整个VBA就这两种方法,区别就是一个不返回结果,另一个返回结果。凡是我能接触到的编程语言也就这两种方法,区别也仅仅是名字不一样。

至于说属性,那还比较简单,毕竟是一些比较具体的内容。

如果你还是不太理解,我就再次举例了。打开EXCEL开发工具中的VISUAL BASIC,也就是编译器,在最上面一排菜单中找到视图,点击对象浏览器。没错,这个地方就是让你查阅EXCEL已经设置好的对象,当然是按照不同的类型来归类的。

在搜索结果下方,显示这 库、类、成员,其实这些是按照对象的大小排列的,库是最大的,你看都是EXCEL,因为现在编写VBA的平台就是EXCEL,所以他是最大一级的,接着是类,然后是成员,其实也就是一级一级的组成内容。我们所要了解的就是类以及类的成员这两块区域。在下方类,找到WORKSHEET,然后右边成员往下翻,你可以找到叫NAME的成员,没错这个就是WORKSHEET的一个属性了,从名字上来看不难理解吧,关键是对于NAME在最下面还有一段话Property Name As String。所以这一连串的内容表示,NAME是WORKSHEET的一个属性,而这个属性是字符串类型的,就因为Property Name As String这段话,String就是一种类型,叫字符串类型。

你还可以继续翻看其他成员,会有sub或者function的,光就一个worksheet就有大量的成员对象,我自己也只能懂其中一点,大部分不明白啥意思,不过其实大部分我也用不到。

定义变量,创建第一个函数

关于类型,对象说了一大堆,接下去就是要用的时候了。怎么用这些类型或者说是对象,一般来说是通过定义变量来使用的。变量对于编程来说是不可或缺的东西,也可以说他是组成程序的最小的内容。

一般比较正规的语言,都是从类型开始写起来,但我们毕竟是刚刚开始接触没必要搞这么复杂,而且VBA就有这么个特点,拿来就可以用,我们也并不是要用VBA创造一个知名软件。所以我们就先插入一个模块,然后在模块中编写一个函数,这个我们在上一章节中有所介绍了,结合今天说的内容,其实模块也是一种类型,而你编写的所有方法或者属性都是他的成员。

我们先编写一个很简单的函数,功能是随意录入两个数字,返回的结果是这两数字的平均数。

既然是需要返回结果的,那就是Function了。我就直接把代码贴出来,然后逐个分析一下

Public Function getAverage(firstNumber As Long, secondNumber As Long)

Dim result As Long

result = (firstNumber + secondNumber) / 2

getAverage = result

End Function

这个Function的名字叫getAverage,然后他需要两个参数,也就是我们定义功能的时候说到的,随意录入两个数字,这两个数字是Long类型的,这种类型是可以带小数的数字,因为随意录入数字,并不仅仅限于是整数。

这里的Public表示这个函数是公用的,也就是他可以在整个EXCEL表格中使用,当然,我们使用的是模块来编写,你不写也默认是全局范围内使用的。

然后我定义了一个变量,名字叫result也就是结果的意思,他也是Long类型的

定义变量的基本语句是Dim [变量名] as [类型]

再之后我让这个定义的变量等于两个录入数字之和并除以2

最后那一句很重要,凡是Function的方法,必须返回结果,所以你整个Function必须等于某个结果,让他返回结果,否则就没用了。那么这个Function名字叫getAverage,所以最后让他等于这个变量就可以了。

当编写完这个函数,你就可以在EXCEL中使用这个函数了,任意单元格输入getAverage的时候,马上EXCEL就会感知到这个函数的存在了,任意输入两个数字,按下回车就可以得到你的结果了。

上一篇:

下一篇:

  推荐阅读

分享