专栏/【VBA】3.代码的三种结构

【VBA】3.代码的三种结构

2024年05月09日 06:40--浏览 · --点赞 · --评论
柯南一梦Kisen
粉丝:5494文章:39

书接上回。我们已经学会了最基本的页面打开保存操作。第一次学的同学看到各种各样的步骤截图,不免觉得有些繁琐难记,但只要你上手跟着步骤走一遍流程,你就会发现其实很简单,这是因为动手实践比双手插兜硬看效率要高的多学任何东西都是如此)。

所以让我们打开上节课保存的代码,来学习本节课的主题:代码结构。

代码是什么?你可以把代码理解为机器的语言,那么一行代码就是我们说的一句话。而代码结构就是代码的运行顺序。代码结构有三种:

  1. 顺序结构

  2. 选择结构

  3. 循环结构

让我来一一介绍。

一、顺序结构

我们来审视一下上节课的代码:

我们会发现我们的代码只有一句话,现在让我们把他改变一下,变成:

a=1是一句赋值语句,表示把1的值赋给a变量。

现在我们如果运行,我们会得到弹出的消息框显示1。这是因为我们先让a=1,然后再去输出a的值。这就是最简单的顺序结构,也是代码运行默认的顺序。在没有其他结构情况下,代码会自上而下依次执行每一句代码内容。这很好理解,就相当于每天要起床,吃饭,工作,睡觉,这是一个固定的顺序。

那这个世界上有没有不确定的顺序呢?

二、选择结构

现在我们想象一下,我们要出门逛街时,需不需要带伞?我们会执行一个“判断”,也就是外面有没有下雨。如果外面下雨了,我们就带伞,如果外面不下雨,我们就不带伞。当我们做出判断的时候,我们的脑子是这样想的:

如果 外面下雨 我就 带伞 否则 不带伞

让我们整理一下,把心中的逻辑变成纸面的逻辑写出:

如果 外面下雨 就

带伞

否则

不带伞

让我们更进一步,学点英语词汇:

If 如果

Then 就

Else 否则

End 终止    

把他写成代码的样子吧:

我们会发现,If和End If,好像有点眼熟——这不是跟过程Sub和End Sub差不多嘛!没错,VBA经常用这种组合来把代码裹起来,这里的End If就是指示一下我们,选择语句就是在If和End If之间的区域进行的

有些时候,我们不一定需要“Else”,就像我们的大脑不需要真正指示我们“别带伞”。所以,如果没有什么不下雨必须要干的事情,我们可以不使用Else:

现在,让我们真正尝试去写选择结构,我们来试试这个

这个代码就是让a=1,b=2,然后进行一个判断,如果a>b成立,则输出“a比b大”这句话,反之会输出“a比b小”。如果你把前两句改成a=4和b=3,你就会得到不同的输出。

学到这里,顺序结构、选择结构似乎都还算简单,那么,来看看循环结构吧。

三、循环结构

所谓循环,就是重复执行某段代码。比如我们走路时,我们大脑会不断指挥我们“迈左脚”、“迈右脚”、“迈左脚”、“迈右脚……那么,如果写成代码:想必是这样:

迈左脚

迈右脚

迈左脚

迈右脚

……

如果是这样,那么我们如果要走1000步就要有1000句代码,太傻了吧,我们需要重复执行代码

我们可以让大脑这样发出指令:

重复执行以下命令100遍!    

迈左脚

迈右脚

我们的循环语句正是为此而生,我们来看看程序写法:

这个就是循环结构的一种最简单的形式——For循环。这里的i是计数器,用来计数。i=1 to 100表示i在循环中从1一次次加到100,每循环一次,i就加1。在佛门修行过的同学们都知道,为了计算念诵佛号的次数,佛门弟子往往会使用“佛珠”或者称“念珠”的法具来记忆念诵次数,每念诵一次就手捻一次,这和循环结构中的计数器是一样的道理。

Next是循环结构的终点,语句会在For和Next之间循环运行,直到i加到100为止。至于Next后面为什么有个i——为了呼应前文中计数器i,让你看的更清爽,其实并没有用处,删掉也不影响

让我们来实践一下吧:

执行这个代码,你将不得不按五次确认(不要写For i=1 To 100甚至更多!

让我们改进一下,看看计数器i还有没有别的用处:

有意思,我们可以看到1、2、3、4、5接连输出。

再来试试这个:

我们会发现i的输出值变为6、7、8、9。

也就是说,我们可以改动i循环的起始结束位置。

我们发现,i每次总是加1。那么,能不能改变i每次增加的值呢?

来试试这个:

我们会发现,输出变成了1、3、5,我们用step 2把循环的计数步长变成了2(代码默认step为1)。

这就是For循环的基本用法,事实上,循环结构还有很多种类型,我不准备一次性介绍完,但是,一个For循环就已经可以做很多事了。

如果你跟着我的文章打了一遍代码并理解了,那么恭喜你!你已经掌握了循环结构,现在我们来玩会数学吧。

玩练习题!

相信大家都听过一位大数学家高斯,高斯小时候上学,老师让他们班计算从1+2+3……加到100,大家都搁那儿一个一个加呢,人家高斯直接用倒序相加法算出结果是50×101=5050。

诚然我们并不是高斯,但是我们有电脑,电脑最擅长的就是干重复的活儿。让我们来硬算1加到100吧。

如果你想挑战一下独立把代码写出来,可以先自己尝试一下,如果不成功,再来看下文。如果成功了,也可以看看我的思路和你的思路有何异同。

接下来我们来仔细剖析一下代码思路,注意:思路比技巧更重要

首先,我们需要一个过程Sub和End Sub,因为这是所有程序必不可少的。

然后我们想想,本篇学的三种结构,应该用哪种?题目中有需要我们选择判断的地方吗?没有;有需要重复的地方吗?。所以我们需要循环结构

我们不知道具体怎么写,但是我们可以想到要循环多少次。从1加到100,显然某种代码要循环100次。我们来大致写个框架吧:

框架已经搭好了,我们知道i会在循环中从1一次次加1,直到变成100,而我们正需要i在每次循环中的加和,那么,我们要怎样一点点的收集i的值呢?

我们需要一个容器来装i。

我们可以创造一个容器a,这个容器刚开始是空空如也,空空如也就是0,我们要给a赋值0。而且我们可以提前找好这个容器,所以这一句a=0应该写在循环结构外面:

我们让它在循环结构把i一遍又一遍地装到自己身体里,我们使用a=a+i来实现,注意“=”在这里并不是数学上的等于,而是“赋值”,这句代码的意思是:a的值加上i的值形成的这样一个值,赋值给a。比如说,如果a=5,b=7,那么执行a=a+b后,a的值就变成了12,而b不会有变化。

我们把a=a+i放到循环结构里,来看看现在我们的代码:

循环代码中i一次次增加,而a一次次从i中抽取值放到自己的身体里,现在我们想要知道结束后a装了多少数值了,我们来用Msgbox一探究竟吧:

这就是最终代码了,运行后输出答案为5050。恭喜你,你使用电脑成功逼平了儿童状态的高斯!

本篇所介绍的三种代码结构,将是编程最基本最重要的概念之一,务必理解掌握,如果总是不理解,请反复学习。    


对应视频:


投诉或建议

玻璃钢生产厂家玻璃钢雕塑价格和图片河北玻璃钢胸像雕塑仿真玻璃钢人物雕塑参考价湖北创意玻璃钢雕塑批发重庆动物玻璃钢雕塑定做云南创意玻璃钢雕塑销售电话桂林佛山玻璃钢雕塑徐汇玻璃钢雕塑性价比高河源发光小品玻璃钢雕塑制作梅州玻璃钢雕塑制作德州玻璃钢雕塑生产厂家商场美陈装修效果图北京仿铜玻璃钢雕塑哪家便宜毕节玻璃钢景观雕塑景观小品海沧园林玻璃钢雕塑热线陕西多彩玻璃钢雕塑销售电话镇江广场玻璃钢花盆肇庆玻璃钢公仔雕塑金华玻璃钢雕塑价位商场通道美陈作用南昌公园玻璃钢雕塑安装金昌城市玻璃钢雕塑安装松原玻璃钢雕塑定制普洱玻璃钢雕塑设计报价江苏通道商场美陈销售企业玻璃钢景观雕塑小品镜框深圳厂家玻璃钢雕塑热线电话铜陵玻璃钢卡通雕塑深圳中庭商场美陈价格太原迁安玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化