2.1-项目介绍
2.2-基本概念介绍
(资料图片仅供参考)
2.3-逻辑思路
2.4-代码
2.5-看代码前的几个基础知识
2.5.1-Sub过程
2.5.2-工作簿-工作表-单元格
2.5.3-工作表某列最大行
2.5.4-顺序-循环-判断
2.5.5-数据类型
2.6-本章示例代码详解
2.6.1-代码结构解析
2.6.2-代码中文解析
2.6.3-思考及延伸
2.7-本章小结
-------------------------------------------------------------
2.1-项目介绍引言
对于正在学习VBA的你,用实际案例去学习是一个非常好的方法。对于非专业科班选手,我们学习VBA更多的意义是在于能够用于实际工作过程中,用以提升工作效率等。所以首先我们能够理解具体的业务,知道如何手动去实现它,接下来只是将手动的工作采用VBA将其自动化而已,这样学习难度会大大降低,也会更加形象具体,不会空洞无聊。
本章引入一个小项目,考试成绩查询,不需要去讨论文中的方法是不是最好的,能够理解这个小项目即可,因为这个项目的意义在于借助它去学习VBA。
已知有4张表,如图2-1所示,语文、数学、英语,里面分别记录个学员的成绩,如图2-1所示。在成绩查询界面工作表输入姓名即可以获取到该学员的三科目的成绩,成绩查询界面工作表如图2-2所示。语文、数学、英语3张表格式一样,如图2-3所示。
图2-3 语文成绩表
-------
2.2-基本概念介绍在开始编程之前,介绍点基础知识。
在Excel中有3个重要的概念务必要了解:
工作簿:指Excel文件,通过文件名称定位
工作表:就是如上面所介绍的语文、数学、英语这样的表,一个Excel工作簿(文件)可能含有多个工作表,通过表名定位
单元格:工作表是由一个一个单元格组成的,每一行每一列定位一个单元格,如图2-4所示。横向为行号,一般采用1,2,3,4…计数;竖向为列号,一般采用A,B,C,D…计数
在图2-2中我们可以看到一个成绩查询按钮,我们写完代码后,肯定不希望每次都要去后台VBE去执行,太麻烦了。创建一个按钮,然后关联后台的代码,以后点击按钮即可运行对应程序。
创建按钮方法: 菜单开发工具-插入-点击按钮图标-在单元格区域按住左键画一个矩形-释放左键-弹出窗口点击确定即可,稍后再关联代码,如图2-5所示。右键选中该控件(这里指新创建的按钮),在弹出的菜单中可以设置控件格式。
在成绩查询界面B1单元格输入学生姓名,点击按钮成绩查询,即可获取到该位同学的三科成绩,结果如图2-6所示。
基本实现逻辑如下:
获取拟查询学生姓名
在语文工作表中的B列查找拟查找姓名,获取行号,进而获取同一行号C列的内容,即该学员的语文成绩
将查到的语文成绩写入成绩查询界面工作表的B4单元格
同理,分别查找到数学成绩、英语成绩,并写入B5、B6单元格
2.4-代码Sub 成绩查询()
Set shtUI = ThisWorkbook.Worksheets("成绩查询界面")
searchName = shtUI.Range("B1")
"查询语文成绩
Set shtYuwen = ThisWorkbook.Worksheets("语文")
maxRow = shtYuwen.Cells(Rows.Count, "B").End(xlUp).Row
For i = 2 To maxRow Step 1
studentName = shtYuwen.Cells(i, "B")
If searchName = studentName Then
score = shtYuwen.Cells(i, "C")
"将成绩返回首页
shtUI.Range("B4") = score
End If
Next i
"查询数学成绩
Set shtShuxue = ThisWorkbook.Worksheets("数学")
maxRow = shtShuxue.Cells(Rows.Count, "B").End(xlUp).Row
For i = 2 To maxRow Step 1
studentName = shtShuxue.Cells(i, "B")
If searchName = studentName Then
score = shtShuxue.Cells(i, "C")
"将成绩返回首页
shtUI.Range("B5") = score
End If
Next i
"查询英语成绩
Set shtYingyu = ThisWorkbook.Worksheets("英语")
maxRow = shtYingyu.Cells(Rows.Count, "B").End(xlUp).Row
For i = 2 To maxRow Step 1
studentName = shtYingyu.Cells(i, "B")
If searchName = studentName Then
score = shtYingyu.Cells(i, "C")
"将成绩返回首页
shtUI.Range("B6") = score
End If
Next i
End Sub
以上代码写在一个模块中(模块创建:VBE界面中,插入菜单-模块),如图2-7所示。写完代码以后,右键点击成绩查询界面工作表中的成绩查询按钮,在弹出的窗口中选择指定宏,进而在图2-8的窗口中关联后台的VBA代码。这样以后执行代码时,只要点击该按钮即可,对于不懂代码的人,也可以使用该功能。
Copyright © 2015-2023 京津冀频道网版权所有 备案号:京ICP备2022022245号-12 联系邮箱:434 922 62 @qq.com