vba put 语名 delphi 用什么语句_XL小李的VBA课程:基础与规范

本文主要包括以下几个方面的内容:

  • VBA是什么?
  • 为什么要用VBA?
  • 怎么用VBA?
2a4f50df12c9a69c15a821dfe766d419.png

VBA是什么?

一、宏:macro

在具体介绍VBA之前,我们先将目光转向“开发工具”选项卡,在这个选项卡的“代码”功能区中,出现了一个名词:宏。同时,还出现了一个操作:录制宏。

757aa59f9062f07debe393b1ac7db5d9.png

录制宏的意思就是将一系列的操作录制下来,保存之后还可以多次重复执行这些操作。

举一个比做工资条还要更加简单的例子,比如删除第一行,然后保存工作簿这一系列的操作。

注:做工资条这个例子是老生常谈了,我所见过的VBA教程的第一个例子都是这个,在这里我就不多解释了。原因有两个,第一,我不想讲,对,任性;第二,最后录制的那个宏中的代码并没有太多可以讲解的内容,因为自己录制的宏都不包括循环过程,也不会涉及具体的算法,着实简单。这个例子可以查看我之前的文章:《Excel 有哪些可能需要熟练掌握而很多人不会的技能?》中 第五部分--排序功能巧用举例 和 第十部分--基本VBA与宏 的相关内容。

假定在A1:E22的区域内的每一个单元格中内的值代表的是初始行号,比如A1单元格内的值是1,B5单元格内的值就是5了。

问题一:如何迅速做到快速填充行号?并且将数值固定下来?请思考。

鼠标操作使用录制宏功能,本例的情况下,在出现的对话框中没必要进行任何操作,直接点击确定即可开始录制宏。

我们需要录入的步骤主要有鼠标选中第一行、鼠标右键点击删除、选中A1单元格、保存工作簿。

操作完上面的步骤之后,点击“开发工具”选项卡中的停止录制,这时,一个宏就录制完成了。

录制完的宏可以通过点击“开发工具”选项卡中的“宏”功能进行查看,会弹出如下的对话框。

9f5c5384ab12f4b8d8052e9ee058a40f.png

为了验证这个宏是否有效,我们可以选中宏1进行执行。执行一次之后,A1单元格的值变成了3,这说明我们所录制的宏是准确且有效的,的的确确删掉了一行。

17889ec7101cd9df73b9618ba04b95d2.png

宏的英文名为macro,从本质上来讲,宏就是一段VBA代码,只不过这段代码比较简单,也存在较大的缺陷,比如无法进行判断和循环等。

在后面的介绍中,我们可以看到,sub过程在Excel中体现出来就是一个宏。

二、VBA代码:Visual Basic For Application

既然宏就是一段VBA代码,那么VBA代码到底是什么呢?

通俗来说,VBA是一种基于Office软件的编程语言,可以使用VBA在Office中来实现一些自定义的功能,而不仅仅局限于软件中已经给出的功能。

再通俗点,就是可以用VBA来在Excel中实现一些花里胡哨的功能。当然在word、access中也可以用到相应的VBA程序,这就不在我们这个系列的讨论范围之内了。

三、xlsm格式的Excel文件

为了更好地使用VBA这一利器,建议大家将包含VBA代码的Excel文件全部另存为.xlsm格式,这个格式的全称叫做 Excel 启用宏的工作簿。

9d3c717217c80d4bf7d01ae718e846eb.png

使用这个格式的文件就可以更加肆无忌惮地写VBA代码了,不用担心不支持宏的问题。此外,什么宏的安全性之类的问题也就没必要管了。

当然了,如果出现一些奇怪的问题,直接上网搜索吧,更管用,没必要记住那些乱七八糟的操作。

问题二:如何才能快速另存为xlsm文件呢?请思考。

四、VBA的编程环境:VBE窗口

在点击“开发工具”选项卡中的“宏”功能后弹出的对话框(这个对话框可以使用Alt + F8快捷键唤出)中点击编辑后,就会弹出一个新的窗口,这个窗口就是进行VBA编程的地方,名为VBE窗口(Visual Basic Editor,可以直接使用Alt + F11快捷键唤出VBE窗口)。

df6516d73aede3f033482e16a4a67879.png

VBE窗口主要包括菜单栏、工具栏、工程资源管理器、属性窗口、代码窗口和立即窗口。

其中,在工程资源管理器中可以看到所有打开的Excel工作簿和已加载的宏,一个工作簿就是一个工程,名称为VBA Project(工作簿名称),如下图所示。

f0b111a0e283451c1b6236cb65792567.png

在工程资源管理器中,有一个文件夹叫做模块。模块是保存VBA代码的地方。

当然,其实代码可以保存在工作表对象中,也可以保存在ThisWorkbook对象中,还可以保存在类模块中。一般情况下,为了避免发生错误,建议将VBA代码保存在模块中。

在立即窗口中可以直接输入命令,回车后将显示命令执行的结果。不过,这并非立即窗口的最重要的作用,立即窗口最重要的用途就是调试代码,也就是将在本文第三部分涉及的debug语句

其他的部分,我不用解释,看名字就能看懂了,我就不多做解释了。

除此之外,为了更方便地写代码,需要这样操作:菜单栏 → 视图 → 工具栏 → 勾选编辑和标准两项。尤其是编辑这一项勾选之后,会出现关键性的功能:缩进、注释、取消注释以及自动完成关键字。

缩进可以用tab键来实现,但是注释和取消注释似乎并没有直接可以用的快捷键,手动打个单引号又无法实现范围注释,所以这个功能强烈推荐

自动完成关键字的功能,可以使用Ctrl + Space快捷键来使用,也是一个神技。当然更多情况下,采用上下箭头选择到某个关键字,然后使用tab键就可以直接输入了。

fa4f8a081cf55161e8a36e4f9e904217.png
794c99bc1159d57c10337a58b4159ec1.png

为什么要用VBA?

介绍了半天VBA是什么,于是就来到了这个深刻的问题:我凭什么要用VBA?我是铁头娃怎么了?

VBA好处都有啥?

一,可以简化重复性的操作,比如那种需要重复无数次的操作,可能只需要几行代码加个循环就能轻松实现。没必要手动地一个一个来。

二,可以实现那些采用一般手法难以完成的谜之操作,比如V001里涉及的双条件下对数据的重新组织的情况。

当然了,点开这篇文章的朋友,都是要学VBA的,多说无益了。

怎么用VBA-读懂、会写?

介绍了是什么和为什么之后,我们接下来进入真正的正题,到底应该怎么用VBA?

我觉得会用VBA有两个层次,第一层是能够读懂代码;第二层是会自己写代码。

现在网络资源如此丰富,只要搜索关键词恰当,有些问题完全可以从网上直接下载代码来解决。再不济一点,稍微修改修改,保留核心算法,也就可以解决问题了。因此,读懂是至关重要的。读懂代码也是自己写代码的基础。

一、VBA程序/VBA代码的基础知识

在一段VBA程序/VBA代码中包括什么呢?一段代码是由哪些内容构成的呢?

以前面提到的删除一行,然后保存的宏为例,我们可以在VBE窗口找到这个宏的代码。

bdf8355e042b185134b5c02b1a2fccf4.png

在这段简单的代码中,包括了两个非常核心的东西:过程与对象。

(1)过程

在VBA中,过程指的是完成一个任务的所有操作的集合,或者是完成一个任务的代码的有序组合。在VBA中,基本的过程有Sub过程和Function过程。

其中Sub过程就是很简单的一堆代码放一起,一般情况下都用Sub过程,录制的宏就是一个Sub过程,录制宏也只能生成Sub过程。上面的这段代码就是一个Sub过程。

Sub过程所定义的过程名会出现在Alt + F8弹出的对话框中,与我们自己录制的宏并无二异。

只有在特殊的情况下,才会用到Function过程。Function过程的含义就是自定义一个函数,自定义的内容包括函数的各个方面,函数名、参数个数、参数所要求的数据类型、运算方法、错误提示,甚至你要是愿意,都可以自己写一个函数文档。

Function过程定义的函数,可以像Excel自带函数那样进行调用,也就是采用函数名+参数的方式进行调用。

一般来说,返回一个值的时候,可以考虑采用Function过程,而要进行一些特殊的动作时,比如填充单元格颜色,移动单元格,修改工作表名称等类似的特殊操作时,就需要采用Sub过程来实现。

Sub过程和Function过程具体的定义方法将在后续更新中展开,此处暂时不多赘述。

(2)对象

对象指的是用代码操作和控制的东西,如工作簿、工作表、单元格、图片、图表、透视表等内容。在上面这段代码中,Rows("1:1")和Range("A1")就是对象,其中Rows("1:1")指的是第一行,Range("A1")指的是A1单元格。

每个对象都有不同的属性,属性是对象包含的内容或特点。举个简单的例子,单元格对象的属性就有包含的值、长宽、填充颜色等。对象与属性之间用半角的点(.)来进行连接,对象在前,属性在后。

除了属性之外,每个对象都有方法,方式是指在对象上执行的某个具体动作。比如上面这段代码中出现的select选中,delete删除,save保存等。对象与方法之间也用半角的点(.)来进行连接,对象在前,方法在后。

在过程中,使用合适的对象,调用对象的属性和方法,辅以合适的算法,就能够完成一段可以发挥实际作用的VBA代码,来解决遇到的各种问题。

二、VBA代码写作的一些规范

为了在写代码的时候少犯错,也为了更好地调试代码,就需要对代码的写作进行规范。

(1)强制声明变量

在VBA中,可以不先声明变量,也就是说,不用先定义一个变量,我再去调用这个变量,但是那样的话,可能就会搞不清楚到底搞了多少个变量。因此,一般情况下,建议开启强制声明变量选项。

在菜单栏 → 工具 → 选项中可以进行操作。

095756a93fb22bccf0cadef1ff292764.png

或者在每次写代码时,自己在最开头写上Option Explicit。这两种方法均可。

(2)控制好缩进

由于VBA的代码窗口体验很差,不是所有编译器都是Sublime Text。在VBA中,代码完全不缩进也丝毫不会影响到最后的结果,能用还是能用,但是,不缩进会导致代码阅读体验极差,甚至会导致看不懂代码,所以希望大家在写程序的时候控制好缩进。

缩进可以使用tab键来完成。一般来说,嵌套一对代码就进行一次缩进,比如if...end if一次,就缩进一次(这一段可能不太好理解,在之后的讲解中,会再进行说明)。

(3)及早配对

及早配对的意思是,在循环语句、判断语句中,整个语句都是有头有尾的,写出开头的时候,就要先把结尾写上,然后再再中间写代码,这样才不容易出错。

举例来说,if判断语句的开头是if,结尾是end if;for循环语句的开头是for,结尾是next。

(4)多写注释

在VBA代码中,以半角单引号开头的那一行就是注释语句,注释语句不会在程序中运行,仅仅是为自己提供一个注解,以便更好地写出代码,也方便别人或者以后的自己看懂代码。

除了给自己提供注解之外,注释还有一个妙用,就是把错误的无效的代码先注释掉,这在调试程序的时候非常管用。

(5)debug.print

这一语句主要用在调试代码的时候,该语句的作用是将需要查看的内容打印(print)到立即窗口,也就是输出到立即窗口。恰当地使用这一语句,将能够清楚地知道每一步输出的结果是什么,更好地完成代码的写作。

结语

本文的主要内容是简单地聊了聊宏、过程、对象等VBA的基础知识,以及提出一些代码写作的规范,方便自己,方便他人。(来自:XL)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值