前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA掌握循环结构,包你效率提高500倍

VBA掌握循环结构,包你效率提高500倍

原创
作者头像
猴子数据分析
修改2020-10-09 11:35:44
1.5K0
修改2020-10-09 11:35:44
举报

这是系列免费教程《Excel VBA:办公自动化》,还是老规矩,看看我们走到哪里了。

1.认识VBA:什么是VBA?

2.这些掌握了,你才敢说自己懂VBA

3.VBA变量5年踩坑吐血精华总结

4.VBA中重要的强制申明,谁看谁明白

我们先看上次分享的案例题目。

在「单元格B2」输入不同的行号,点击「显示答案」按钮,计算「F列」和「H列」对应行号的乘积,并将每个乘积结果加上公共值「单元格B4」的50,将最终结果显示在相应的单元格。

我们首先回顾一下上述的操作,我们先输入不同题号,然后点击宏按钮,整个过程需要2步。

如果题目只有10道,好像看起来没什么,但是如果题目有100道、1,000道或是更多的题目呢?

假设题目1,000道,输入题号+点击按钮2连操作你仅需要1s(那得多快的手速),全部操作完就是1,000s,也就约为17分钟。

如果这个题目的数字再进一步放大呢?我想时间成本就不可想象了。

其实,上述案例是我之前部门同事工作的简化版,他经常要面对机械重复、枯燥乏味的Excel表格操作。

当然了,如今的他早已摆脱当年的那种苦海~

如果你也想早日摆脱机械重复、枯燥乏味的Excel表格操作苦海,下面2个知识点你一定要掌握。

1.for循环

案例:不输入题号,仅点击1次「显示答案」按钮,所有题目答案自动计算后显示在「J列」

我们来分析案例(仅以10道题目来分析)

我们观察发现:行号是变化的,而且是「正向递增加1」的规律。

在《变量》分享那篇文章,我们将这些变化的行号数字更改为「变量」,用x代替,程序被精简为这样:

那时,我们通过将「单元格B2」的值赋值给「变量x」,然后手动变更「单元格B2」的值,从而变更「变量x」的值,那么能不能让「变量x」完全自动变化呢?

我们对之前的代码小小改造一下,仅加2句「For循环结构」代码即可轻松实现一键自动计算上述案例答案:

我们把上述代码单独拿出来,分析一下

For循环主要分为3个部分,分别为:

(1)循环开始

标准的书写格式为「For xxx = xxx To xxx Step xxx」,表示的意思是「变量xxx」的值从xxx变化为xxx,每次增加xxx

(2)循环内容

循环内容根据工作需求书写相关执行代码就好,一般都是循环的核心代码,比如这里的循环内容就是「J列某行单元格」=「F列某行单元格」*「H列某行单元格」+ 50

(3)循环结束

标准的书写格式为「Next xxx」,表示的意思是「下一个xxx的值」

[备注]

a.「Step」可以取正整数和负整数,也可以省略不写;当「Step」省略不写时,值默认为1。

b.「Next xxx」中的「变量 xxx」可以省略不写,但建议完整书写,不省略。

我们来模拟一下上述「For循环结构」的程序运行过程:

(1)程序读取「循环开始」语句「For x = 1 To 10 Step 1」

由于我们使用了「For循环开始」,并且严格规定了「变量X」的值从1变为10,每次仅增加1,即:x可以取1 2 3 4 ...10。而本次「x = 1」

(2)读取第2句「循环内容」代码「Cells(x, 10) = Cells(x, 6) * Cells(x, 8) + h」

由于第1句代码确定了「x = 1」,而「Cells(4, 2) = 50」以及「h = Cells(4, 2)」,那么「h = 50」。因此,上述代码可以翻译为:「单元格J1」= 「单元格H1」* 「单元格F1」+50。最后,程序到单元格获取对应的值即可。

(3)读取第3句「循环结束」代码「Next x」

此时,「变量 x = 2」

(4)程序回到第1句读取「循环开始」语句「For x = 1 To 10 Step 1」

我们可以看到此时程序自动返回「循环开始」的地方,由于此时「变量 x = 2」仍然符合「X 从 1 变为 10 每次增加1」这个区间,因此程序接着运行,一直等到「变量 x = 11」的时候,程序会跳出循环,执行下一个语句。

(5)我们看下最终的程序的执行结果

看到这里我们大家也许就明白了,所谓的「For循环结构」就是:

提前设置一定的条件或规则,然后程序自动按照设定的条件或规则自动运行,等到不符合设定的条件或规则时,程序跳出循环结构,执行下一个句子。

那么,我们就可利用「For循环结构」这种符合条件自动运行的特性,根据工作场景书写相关代码即可。

2.代码排版

按照马斯洛的需求层次理论,我们在达到一定的需求层次之后,会追求更高的需求层次。

那么,这句话应用到VBA代码领域就是:在我们掌握了一定的代码基础之后,我们就希望掌握更强的VBA技能。(这些技能你只要跟着我们的VBA分享课一步一个脚印练习,一定能够惊叹自己的超能力)

但真正的VBA高手不仅取决于VBA代码实力,还取决于自己写的代码别人能不能看懂,也包括自己日后能不能看懂。(别问我为什么,因为我经历过翻译自己代码的痛苦)

很明显,更喜欢右边的排版,因为它排版干净、代码从属关系清晰,更易阅读。

所以说,我们不仅要多金(技能强),还要帅气(排版好)

那么,如何实现上述帅气的排版呢?很简单,戳一下就可以

(1)按「Tab」代码缩进

(2)点选VBE编辑器的缩进按钮

正所谓:“帅气”VBA路,从Tab起步

3.总结

(1)For循环结构

提前设置一定的条件或规则,然后程序自动按照设定的条件或规则自动运行,等到不符合设定的条件或规则时,程序跳出循环结构,执行下一个句子。

(2)VBA代码排版

“帅气”VBA路,从Tab起步

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档