大家好,我们这讲开始一个新的专题,这个专题中我们首先讲解一下VBA代码运用的模块(module),然后先容给大家如何利用VBA代码实现已经打开文件的自动关闭。
我们要知道,模块是代码的容器。所有代码必须写在模块中才能实行。可以将模块看做为一个文件,实际上,我们确实可以将模块导出为一个文本文件。在一个模块中,可以包含几个过程。对付一个小的工程,可以将所有代码放在一个模块中。而对付大的、繁芜的项目,可以将代码写在几个模块中,以利于组织和修正。在实行代码时,过程在哪个模块中并不主要。来自一个模块的代码可以调用同一项目中任何其他模块中的代码(把稳所调用的过程浸染域不是私有的Private)。
其余,我们也可以将一个模块文件,其文件名扩展名为bas,类模块文件,其文件名扩展名为cls或frm(用于用户窗体)通过从VBA编辑器的"文件"菜单中选择"导入"项,将该模块导入到项目中。那么在VBA中代码又是如何进行分类呢?一样平常来讲,按模块分,代码的可以有四种类型:标准模块代码;事情簿和事情表模块代码;用户窗体模块代码;类模块代码,这个专题我将紧张给大家先容标准模块代码,事情簿和事情表模块代码的知识.对付窗体模块涉及到的内容类似于上述两个部分不再讲解,对付类模块大家可以参考我的专门教程"VBA中类模块的解读及运用"。

第一节 标准模块代码(Standard Code Modules)
标准代码模块,是放置大部分VBA代码的地方。对付新伎俩式员,所有代码都会将在标准模块中。我们实现的绝大多数的功能也是在标准模块代码中完成的。这讲的内容便是给大家讲解标准模块代码。
1 标准模块代码的组成一个标准模块代码一样平常包含三个部分。第一个是编译器指令部分,位于模块的最顶部,它包含诸如Option Explicit和Option Compare Text之类的指令。但这些指令不是必需的,你可以根据自己的习气在须要的时候利用它们。第二部分称为声明部分,可以声明了模块级或过程级范围的变量。这些变量可以由模块中的任何过程访问,并且纵然在实行了一个过程或一组过程并修正了其值之后,这些变量仍保留其值。声明部分也可以包含声明引用函数。这些函数定义常日指向构成Windows操作系统的各种DLL文件中的函数。这些语句Sub、Function或Property过程之前。第三部分是模块中包含的实际代码。代码部分包含实行实际事情的所有代码。
上面的代码是本专题将利用的代码,这段代码没有包含上面讲解的第一部分,没有设置逼迫变量的声明及比较的模式等等,但包含上面讲解的第二部分,这部分声明了一个正常的Public变量: RunWhen,这个变量是在全体工程中有效的。还声明了一个常数的NUM_MINUTES,这个常数的意义便是我们将要经由多永劫光让这个文件自动关闭。在上面的SUB过程便是我们前面提到的第三部分过程代码。
2 标准模块代码中的过程分类过程是可以作为一个单元实行的代码块。所有代码必须属于一个过程。代码不能存在于过程之外。虽然单个模块可以包含一定数量(<=1000)的单个过程,但常日最好将这些过程按干系功能分组为多个模块。这使得项目的组织更好,并可以让某个过程代码得到多次的调用。我们可以利用两种类型的过程。(实际上,有三种类型,但这里不谈论属性过程。)
第一个过程是SUB过程,这个过程可以自己运行,也可以被另一个过程调用,或者调用其余的过程。须要把稳的是:sub过程不会向调用它的过程供应返回值,它只是实行,然后将程序运行的掌握权再返回给调用它的过程。如果它没有被另一个过程调用,只是自己的运行,则终止代码实行。
第二个过程是函数Function过程,这个过程类似于SUB过程,只是函数可以将值返回给调用它的过程。函数常日将一个或多个参数作为输入,并将单个值返回给调用者,调用者的值取决于输入参数的值。我们来看看下面的的代码,SUB过程MYNZ调用函数过程CircleArea,将圆的半径通报给它。CircleArea函数接管此输入,进行大略打算,并将结果返回给调用方过程。
Sub MYNZ()
Dim Area As Double
Dim Radius As Double
Radius = 11
Area = CircleArea(Radius)
MsgBox "The area is: " & CStr(Area)
End Sub
Function CircleArea(Radius As Double) As Double
CircleArea = 3.14159 (Radius ^ 2)
End Function
代码的截图:
上面的讲解中,无论是SUB过程还是Function过程,都是一个标准模块内的过程。
一个VBA程序工程可以包含任意多个标准代码模块。这使得您可以很随意马虎地将您的过程划分为不同的模块,以便于组织和掩护。例如,可以将所有数据库过程放在一个名为database的模块中,将所有数学过程放在另一个名为Math的模块中。只要过程没有Private关键字声明,模块没有标记为Private,就可以从任何其他模块调用,而无需实行任何分外操作。
本节知识点回向:VBA中代码一样平常分为几类?标准模块代码一样平常分为几部分?SUB过程和
Function过程有什么不同?
本节内容详细代码"参考003事情表.XLSM"
VBA是利用Office实现自己小型办公自动化的有效手段,这是我对VBA的运用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁便是王者。个中登峰至极的技能非VBA莫属!
学习VBA是个过程,也须要经历一种呆板的觉得,如太白诗云:众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。
"水善利万物而不争",绵绵密密,微则无声,巨则彭湃。学习亦如此,知道什么是自己所须要的,不要蜷缩在一小块自认为天国的天下里,待到晚年时再去做自欺欺人的辞吐。要努力提高自己,用一颗充满活气的心灵,把握现在,这才是进取。越是故意义的事情,困难会越多。愿力决定始终,聪慧决定成败。不管碰着什么,都是风景。看淡纷争,看轻得失落。茶,满也好,少也好,不要计较;浓也好,淡也好,个中自有值得品的味道。去感悟真实的韶光,静下心,多学习,积累福报。而不是每天混日子,也不是每天熬日子。在后疫情更加严厉的存量残杀天下中,为自己的生存进行知识的储备,特殊是新知识的储备。学习时微而无声,利用时则巨则彭湃。
我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用履历,推出了六部VBA专门教程。
第一套:VBA代码办理方案 是VBA中各个知识点的讲解,覆盖绝大多数的VBA知识点,初学必备;
第二套:VBA数据库办理方案 数据库是数据处理的专业利器,教程中详细先容了利用ADO连接ACCDB和EXCEL的方法和实例操作,适宜中级职员的学习。
第三套:VBA数组与字典办理方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是低级及中级职员代码精进的手段。
第四套:VBA代码办理方案之*** 是专门面向初学者的***讲解,可以快速入门,更快的节制这门技能。
第五套:VBA中类的解读和利用 这是一部高等教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。
第六套教程:《VBA信息获取与处理》,这是一部高等教程,涉及范围更广,实用性更强,面向中高等职员。教程共二十个专题,包括:跨运用程序信息得到、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板运用、Split函数扩展、事情表信息与其他运用交互,FSO工具的利用、事情表及文件夹信息的获取、图形信息的获取以及定制事情表信息函数等等内容。如须要可以可以WeChat: NZ9668
学习的过程也是修心的过程,修一个沉着的心。在代码的天下中,心沉着了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多企图。利人便是利己。这些教程也是为帮助大家起航,助上我自己之力,我的上述教程是我多的履历的通报,大家可以根据以上资料1,3,2,6,5或者是4,3,2,6,5的顺序逐渐深入的逐渐学习。
每一分收成都是发展的记录,怎无凭,正是这种执着,造诣了朝霞的残酷。末了将一阙词送给致力于VBA学习的朋友,让大家感想熏染一下学习过程的呆板与执着:
浮云掠过,暗语无声,
唯有清风,惊了梦中啼莺。
望星,疏移北斗,
奈将往事雁同行。
阡陌人,昏灯明暗,
忍顾长亭。
多少VBA人,
暗夜中,悄声寻梦,盼却天明。
怎无凭!
分享成果,随喜正能量