怎么用excel vba开发学生管理系统

经过不断完善,我们的系统已经能够自由地将<员工基本信息表>中输入的信息灵活地导入<员工信息数据库>中 。
现在,让我们能够查询<员工信息数据库>中的数据,并将查询结果自动显示到<员工基本信息表(查询)>中 。
为此,我们建立一张与<员工基本信息表>完全相同的工作表,将其命名为<员工基本信息表(查询)> 。
现在的工作簿有三张表,如下图所示 。

怎么用excel vba开发学生管理系统

文章插图
命名动态名称
使用公式命名动态名称 。单击“公式”功能区选项卡中的“定义名称”,调出“新建名称”对话框,将名称命名为“姓名”,在“引用位置”输入公式:
=OFFSET(员工信息数据库!$C$1,1,0,COUNTA(员工信息数据库!$C:$C)-1,1)
单击“确定”完成名称的定义,如下图所示 。
怎么用excel vba开发学生管理系统

文章插图
这样,当在<员工信息数据库>表中增加信息时,名称定义的内容会自动扩展 。
定义数据有效性
在<员工基本信息表(查询)>的单元格B3(即姓名单元格)定义数据有效性 。过程如下图所示 。
怎么用excel vba开发学生管理系统

文章插图
提取员工信息
下面,我们来编写程序 。当在单元格B3中选择某个姓名后,会调取相应的信息自动填充<员工基本信息表(查询)> 。
程序代码如下:
Sub FindInfo()
‘声明Worksheet变量
Dim wksInfo As Worksheet
Dim wksBaseInfoCX As Worksheet
‘声明变量,代表工作表中最后一行行号
Dim lLastRow As Long
‘声明单元格对象变量
Dim rng As Range
‘给变量赋值
Set wksInfo = ThisWorkbook.Worksheets(“员工信息数据库”)
【怎么用excel vba开发学生管理系统】Set wksBaseInfoCX =ThisWorkbook.Worksheets(“员工基本信息表 (查询)”)
‘找到<员工信息数据库>表中的最后一行
lLastRow = wksInfo.Range(“C”& Rows.Count).End(xlUp).Row
‘在<员工信息数据库>表中找到与<员工基本信息表(查询)>表中单元格B3(即姓名单元格)内容相同的单元格
Set rng = wksInfo.Range(“C2:C”& lLastRow).Find(What:=wksBaseInfoCX.Range(“B3”),LookAt:=xlWhole)
‘如果找到,则填充<员工基本信息表(查询)>表
With wksBaseInfoCX
‘如果单元格B3中有值,且在<员工信息数据库>中已要找该值
If (.Range(“B3”).Value<> “”) And (Not rng Is Nothing) Then
.Range(“B2”).Value =https://www.i8ku.com/2021/rng.Offset(0, -2).Value
.Range(“F2”).Value =https://www.i8ku.com/2021/rng.Offset(0, -1).Value
.Range(“D3”).Value = https://www.i8ku.com/2021/rng.Offset(0,1).Value
.Range(“F3”).Value =https://www.i8ku.com/2021/rng.Offset(0, 2).Value
.Range(“B4”).Value =https://www.i8ku.com/2021/rng.Offset(0, 3).Value
.Range(“D4”).Value =https://www.i8ku.com/2021/rng.Offset(0, 4).Value
.Range(“F4”).Value =https://www.i8ku.com/2021/rng.Offset(0, 5).Value
.Range(“B5”).Value =https://www.i8ku.com/2021/rng.Offset(0, 6).Value
.Range(“F5”).Value =https://www.i8ku.com/2021/rng.Offset(0, 7).Value
.Range(“B6”).Value =https://www.i8ku.com/2021/rng.Offset(0, 8).Value
.Range(“D6”).Value =https://www.i8ku.com/2021/rng.Offset(0, 9).Value
.Range(“F6”).Value =https://www.i8ku.com/2021/rng.Offset(0, 10).Value
.Range(“B7”).Value =https://www.i8ku.com/2021/rng.Offset(0, 11).Value

推荐阅读