前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA变量5年踩坑吐血精华总结

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

原创
作者头像
猴子数据分析
修改2020-09-16 10:10:44
1.6K0
修改2020-09-16 10:10:44
举报
文章被收录于专栏:猴子数据分析猴子数据分析

这是《Excel VBA:办公自动化》教程的第3节,介绍变量。

1.变量的基本知识

案例:在「单元格B3」输入不同的行号,然后点击「显示答案」按钮,程序就会自动计算右边相应题目的答案,如何实现?

[备注]

1.题目中F列的数据采用了RANDBETWEEN(10,100),H列采用了RANDBETWEEN(20,50);

2.函数RANDBETWEEN(bottom,top),用于返回一个介于bottom(最小值)和top(最大值)之间的随机数,且每次Excel编辑后该公式都会自动刷新返回的随机数;

我们一起思考一下,这样一个需求用第02篇(todo文章传输门)分享的能够实现吗?我们来分析一下:

可以看到:因为「行号」被我们写为「固定」的4,所以导致我们按下按钮,程序就只能计算第四行的相应单元格的运算结果。

如果按照上面这个思路,是不是我们需要在每行后面都加上一个「查看答案」的按钮,然后关联每一个宏。

如果是这样的话,那么还学什么VBA,直接手工输入,它不香吗?

是的,那么我们用VBA如何实现呢?

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

在VBA中,我们将这种根据需要能够随时变化的称为变量。

其实,「变量」这个概念,我们在初中都已经能够运用的出神入化了,比如:

这里面,我们通常称x为自变量,能够取任何变化的数字,而y(因变量)就会得到相应的计算结果。怎么样,有么有很熟悉的味道?

回到刚才的那个题目,我们需要将这些变化的行号数字更改为变量。我们用x代替,那么程序就变为:

我们又知道,变量x的变化是依据「单元格B2」内容的变化而变化,也就是:

[备注]

在VBA中,「=」专业术语是「赋值」

即:将等式右边的内容赋值给等式左边,可以类似于我们日常所理解的等号

那么,这个程序完整的代码(乘法测试是这个小程序的名称),就是:

接下来,为了方便大家的理解,我们来模拟一下程序的运行步骤:

(1)点击按钮「查看答案」

(2)按钮自动连接运行宏「乘法测试」

(3)宏「乘法测试」开始逐行执行-第一行

VBA看到Cells(2, 2),说这个我认识,Cells(2, 2)就是「单元格B2」。于是去寻找「单元格B2」的值,发现「单元格B2」=1

(4)「单元格B2」的值1带入Cells(x, 10) = Cells(x, 6) * Cells(x, 8),变为Cells(1, 10) = Cells(1, 6) * Cells(1, 8),翻译为人话就是:单元格J1 = 单元格F1* 单元格 H1

(5)然后,「乘法测试」宏去Excel中寻找单元格F1的值为 28,单元格H1的值为30,计算二者之间的值

(6)最后,将二者的乘积赋值给「单元格F1」,并执行值写入操作

通过,以上我们使用VBA中的变量使我们的程序更加的灵活

有的同学可能会说:猴子,我想把x换为Cells(2, 2) ,把程序改为这个样子

的确,完全可以这样,结果完全一样。但是这样操作,有以下几点缺点:

1)程序写起来特别的长,非常容易出错;

2)代码不易维护,修改难度大;

3)VBA从内存中读取变量的时间要远低于读取单元格的时间;

因此,可以总结使用变量有以下好处(拿小本本记好):

(1)程序灵活,易于维护和修改;

(2)代码简洁,更加优雅;

(3)执行速度更快,效率更高。

2.变量命名规则

案例:已知「单元格D3」为固定值10,在「单元格C3」输入任意数值,点击「查看答案」求得长方形的面积显示在「单元格E3」

那么,我们该如何写代码呢?

(1)将「单元格C3」也就是Cells(3, 3)的数值取出来,赋值给变量x,那么变量x现在就是「长」

(2)用变量y代表长方形面积,根据「长方形面积 = 长 * 宽」公式写为「y = x * Cells(3, 4)」

(3)最后,将「y」值赋值给「单元格E5」也就是Cells(3, 5),并同时执行数值写入操作

最终,程序就能够比较好的完成了,到这里似乎完成了所有的工作。

但是大家有没有发现,代码是写完了,可是上面都是x,y这些英文字母,那么这些到底代表什么意思?

是的,一份优雅的代码,必须有一个好的名字。比如大家看下下图,是不是会很清晰呢?

是的,这样写,确实非常容易读懂。但是,大家需要注意给VBA中变量取名字

需要注意以下几点:

(1)尽量使用有意义的名字,且尽量使用英文或拼音命名

一方面,变量命名有意义就是大家可以读懂,知道变量表达的意义,增强代码的可读性。

另一方面,尽量使用英文或拼音,因为绝大多数的程序基本都是完全支持英文,部分语言或是版本对中文兼容性较差。比如:长,用英文「length」或是「chang」,而尽量不用使用中文「长」

(2)不要使用特殊字符

我们一般常用的是英文、中文、数字、下划线且不能以数字开头

(3)不能和系统保留字(关键字)一致

保留字(关键字)就是在VBA中被程序赋予特殊含义的单词。比如:sub和end sub表示程序的开始和结束;for表示循环;while表示循环.....

(4)VBA大小写不敏感

比如:定义变量Aa = 1 和变量 aA = 10,我们人可能认为两个变量不一样,但是在VBA认为这两个变量是一样的。

3.总结

好了,总结一下今天的VBA知识点。

(1)变量就是根据需要能够随时变化的,使用它有以下3个优点:

a.程序灵活,易于维护和修改;

b.代码简洁,更加优雅;

c.执行速度更快,效率更高。

(2)变量命名有讲究,需要注意以下四点:

a.尽量使用有意义的名字,且尽量使用英文或拼音命名

b.不要使用特殊字符

c.不能和系统保留字(关键字)一致

d.VBA大小写不敏感

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

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

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

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

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