循环结束后变回去 设置一个值_VBA掌握循环结构,包你效率提高500倍

572b3647fa2daf6645dd1679f3e74a06.png

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

1.认识VBA:什么是VBA?

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

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

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

2a64e780fde7be32fab58668a81cf762.png

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

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

c313efcc4a9bf3adb1f2d206b0c17d57.png

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

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

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

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

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

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

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

1.for循环

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

d9dd60a8e93347b3672f6c8cdd9919eb.png

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

0bc5ff91e05616a676fbf50c051182f7.png

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

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

5a4d339a48198d30df3ff286626a7519.png

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

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

15cea52151a108637b7a96de72820826.png

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

3a24c3f18ac8d7cbf1fd1d19a8253776.png

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

(1)循环开始

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

3018aa86cede677978f30caf4a76c400.png

(2)循环内容

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

fa8ba9e242f9035ccfe07faf28560349.png

(3)循环结束

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

ad7c052163f05e8d296a1251966b4096.png

[备注]

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

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

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

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

c2a2ac2ff4e14ade16ff9d1301ea3bdc.png

由于我们使用了「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」

3eebc86f09e3c11ded2f9543879932ea.png

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

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

55e6f817ad732bf7bcfe8fc09a1ff6a6.png

此时,「变量 x = 2」

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

0890bef31598b3ad4ce14abdb162b1dd.png

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

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

fb113f1c5a047a777d4f519b5907c024.png

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

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

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

2.代码排版

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

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

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

0d10ecd8eb9dd6eec9d58d74c83a0b5b.png

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

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

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

(1)按「Tab」代码缩进

cbfe318dc026c8d1b9becfa98eb75d33.png

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

3c75fe1a2d5803688ce61f5bbe142002.png

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

3.总结

(1)For循环结构

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

de9c2af2c38051954ed27b0ae1ca3256.png

(2)VBA代码排版

“帅气”VBA路,从Tab起步

42c4c7d5cbfba9c7caa9369040f77d03.png

推荐:人工智能时代的必学技能

5d6c82e179fb2287a8ace19c8eaf2877.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

连接到kali linux服务器上的MySQL服务器错误

前言:想把数据库什么的都放在虚拟机kali Linux里,但无奈出了好多错误。 首先:可以参照上一篇文章开启kali服务器端的远程连接功能,上一篇文章 然后:使用window端的sqlyog(MySQL图形化连接工具)连…

dedecms后台怎么添加发布软件?织梦后台软件内容管理

使用织梦cms有很多的功能,其中有一个是在dedecms后台添加发布软件,然后在前台大家可以直接下载软件,在织梦cms后台怎么添加发布软件呢?下面是织梦软件内容管理的主要操作步骤。使用织梦cms有很多的功能,其中有一个是在…

301 302区别_如何正确理解301,302和canonial标签

今天我们来学习一下几个比较容易混淆的页面跳转标签,301,302,relcanonial。在谷歌SEO里面,我们比较容易常见的是第一个301,302和canonial出现的比较少,但是不代表不存在,我会尝试从以下价格方面…

ffmpeg文档08-表达式计算/求值

8 表达式计算/求值 在计算表达式时,ffmpeg通过libavutil/eval.h接口调用内部计算器进行计算。 表达式可以包含一元运算符、运算符、常数和函数 两个表达式expr1和expr2可以组合起来成为"expr1;expr2" ,两个表达式都会被计算,但是新…

为什么手机游戏手柄没有流行起来?

问答社区知乎上有人提了一个问题,“为什么手机用游戏手柄没有流行?” Ta找了不少论证:1)手机用户数量很大;2)大量用户在手机上花费最多时间的是玩游戏;3)游戏机平台(的游…

c++排序算法ppt_C/C++学习教程:C语言排序算法—插入排序算法

前言:插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。直接插入排序是插入排序算法中的一种,采用的方法是:在…

python函数参数

1.位置参数 2.默认参数 指向参数为不可变对象 3.可变参数 **args 一个列表list或是元组tuple 4.关键字参数 **kw,是一个字典dict 5.命名关键字参数 *, 转载于:https://www.cnblogs.com/aliy-pan/p/5198025.html

Python 常用函数 configparser模块

使用ConfigParser模块读写ini文件 ConfigParserPython的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。模块所解析的ini配置文件是由多个section构成,每个section名用中括号‘[]’包含,每…

自制Unity小游戏TankHero-2D(3)开始玩起来

自制Unity小游戏TankHero-2D(3)开始玩起来 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的。仅为学习Unity之用。图片大部分是自己画的,少数是从网上搜来的。您可以到我的github页…

mysql按月分列统计_实现mysql按月统计的教程

mysql有个字段是DATETIME类型,要实现可以按月统计,该怎么写sql语句?select month(f1) from tt group by month(f1)or select DATE_FORMAT(f1,%m) from tt group by DATE_FORMAT(f1,%m)比如数据库的为2008-01-15 12:10:…

Log4j的扩展-支持设置最大日志数量的DailyRollingFileAppender

Log4j现在已经被大家熟知了,所有细节都可以在网上查到,Log4j支持Appender,其中DailyRollingFileAppender是被经常用到的Appender之一。在讨论今天的主题之前,我们先看下另外一个Appender。 最常用的Appender——RollingFileAppend…

VirtualBox虚拟机安装CentOS 7

新建虚拟机 因为比较简单,所以对于VirtualBox就不做过多介绍了,直接下载安装即可,安装好之后打开Oracle VM VirtualBox管理器,点击新建,选择Red Hat(根据windows主机选择 32/64 bit,通常会自动识…

mysql 指定账户已存在_安装mysql时告诉我指定的账户已存在?

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户…

C语言:用字符读取流和输出流来读写入数据。(文本文件)

/* 文件的几种操作模式: r:只读 w:只写 rw:可读可写 文件的分类: t:文本文件(字符文件) b:二进制文件(字节文件)注意: 采用只读方式打开文件时,如果源文件不存在,打开文件会失败! 采用只写方式打开文件时,不管源文件存不存在,都不会失败…

PC 上访问设备数据库的方法

通过 .NET 访问 .sdf 的数据库的方法: 在 VS2005 IDE 中,创建 SQL MOible 数据库,编辑表结果和填充数据。 具体是在 Server Explorer 中,右键单击 “Data Connections”,选择 “Add Connection”,新建一个 …

模板原理和操作数据类的观点【艰难的一天,慢慢的会过去的】

1.模板原理:视图类【将数据输出到模板中,实现对视图的控制】 smarty的类实现对视图的控制【展示和smarty的基本语法:smarty需要它的库进行支持】 面向对象的编程中对象的访问和类的访问本质上还是代码空间的访问,区别也在于对象的…

mysql 用户 类别_从mysql里读取用户类型

##1、后端1(从mysql里读取用户类型):from django import formsfrom django.forms import widgetsfrom django.forms import fieldsfrom app01 import modelsfrom django.forms import ModelChoiceField,ModelMultipleChoiceFieldfrom django.shortcuts import rende…

从C语言到C++成长经历所得的一些技巧和感悟

我介绍几个办法,学习办法,期望你能找到爱好1。必定要和喜爱编程的,或编程凶猛的,或常常编程的人,在一同,常常探讨问题!初学编程会有许多问题呈现,你自己很 难处理 c是我们必定要学的…

老子《道德经》第三十三章

上德不德,是以有德;下德不失德,是以无德。 上德无为而无不为,下德为之而有以为,上仁为之而无以为,上义为之而有以为。 上礼为之而莫之应,则攘臂而扔之。 故失道而后德,失德而后仁&am…

[Spring]-各种标注-零配置

个人学习笔记,记录了一些比较基础的标注; 1、controller 控制器(注入服务)2、service 服务(注入dao)3、repository dao(实现dao访问)4、component pojo实例化到spring容器中&#xf…