咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

一个硬件工程师的Excel VBA的自学之旅。

上一次只是简单的介绍了Excel VBA的程序组成,这次通过实例操作Excel表格,让大家体会到Excel VBA的便利,且通过实例介绍部分Excel VBA的基础语法。

1、统计学生总分

现有一个学生成绩单如下,需要在F列算出每个学生的总分。

2、运行VBA程序后在F列计算出了每个学生的总分,如下图所示。

3、Excel VBA代码如下,下面来介绍涉及到的各种Excel VBA基础语法。

前5句带Dim As的语句是声明了5个变量,变量只有声明了,才能使用。

Excel VBA里面包含的数据类型如下图所示。

Set sht = ThisWorkbook.Worksheets(1)

Set的功能是将对象引用赋给变量,ThisWorkbook.Worksheets(1)表示的是VBA代码所在的Excel表格的第一张Sheet页,第二张Sheet页是ThisWorkbook.Worksheets(2)。上述语句就是把工作表的第一个Sheet页引用给sht,后续程序就可以用sht替代ThisWorkbook.Worksheets(1)使用。

故 math = sht.Cells(i, "D").Value

可以改成 math = ThisWorkbook.Worksheets(1).Cells(i, "D").Value

使用了Set引用某个Sheet页,如果以后需要操作的Sheet页为第二张Sheet页,只需要修改Set sht = ThisWorkbook.Worksheets(2)就可以,其他地方都不用动,大大方便了程序的修改。

i = 2

这是给变量赋值,为什么赋值为2,成绩表格的第二行才是成绩,第一行是表头,所以从第二行开始执行成绩统计。

i使用Integer,其范围为 -32,768 到 32,767 之间。因行数是整数,且行数没有超过32767,所以可以使用。而其他4个和成绩相关的变量使用Single(单精度浮点型),因为成绩可能出现带小数点的分数,所以没有使用整型。

Do While sht.Cells(i, "A").Value <> ""

Loop

这是一个循环语句结构,其基本结构如下图所示,

sht.Cells(i, "A").Value <> ""

这是一个逻辑表达式,用到了不等号“<>”,功能是判断A列的每个表格是否是空的,如果是空的,返回结果为False,进而退出Do While循环。

sht.Cells(i, "A").Value 是获取A列的每个表格的值,例如sht.Cells(3, "A").Value是A3的值“9202”。

Excel VBA里面包含的比较运算符及作用如下表所示。

language = sht.Cells(i, "C").Value '获取语文成绩

math = sht.Cells(i, "D").Value '获取数学成绩

english = sht.Cells(i, "E").Value '获取英语成绩

上述3条语句是获取学生的语文等3门课程的成绩,“=”在这里是赋值的意思。

gross_score = language + math + english '算出总分

上述语句是算出总分,并赋值给总分变量。

Excel VBA里面包含的算术运算符及作用如下表所示。

sht.Cells(i, "F").Value = gross_score '把总分写到表格F列

上述语句是给F列的表格赋值,写上总分。需要注意,sht.Cells(i, "F").Value在不同的位置,代表的作用不同。

例如:math = sht.Cells(i, "D").Value '获取数学成绩

sht.Cells(i, "F").Value = gross_score '把总分写到表格F列

i = i + 1

处理完一行,计数需要+1,下一次就是处理下一行的数据。没有这一行代码,就一直在处理第二行的数据。


以上内容如有描述错误,欢迎指导。