用vba和excel表格制作一个学生管理系统(有增删改查的功能),需要储存学生的姓名,性别,年龄,年级,地址,并实现窗体显示。完整版
时间: 2023-12-09 15:03:10 浏览: 178
用EXCEL做一个学生成绩管理系统.pdf
好的,下面是一个完整版的VBA和Excel学生管理系统的示例代码。该系统支持增删改查操作,可以储存学生的姓名、性别、年龄、年级和地址,并且包含一个用于显示学生信息的用户窗体。
首先,创建一个名为“Students”的Excel表格,并在其中添加一个名为“Sheet1”的工作表。在工作表中,添加以下列:姓名、性别、年龄、年级、地址。每一行都应该是一个学生的信息。
接下来,创建一个名为“frmStudents”的用户窗体。在窗体中,添加以下控件:
- 文本框txtName:用于输入或显示学生的姓名。
- 文本框txtGender:用于输入或显示学生的性别。
- 文本框txtAge:用于输入或显示学生的年龄。
- 文本框txtGrade:用于输入或显示学生的年级。
- 文本框txtAddress:用于输入或显示学生的地址。
- 按钮cmdAdd:用于添加新学生信息。
- 按钮cmdUpdate:用于更新学生信息。
- 按钮cmdDelete:用于删除学生信息。
- 按钮cmdFirst:用于查看第一个学生信息。
- 按钮cmdPrevious:用于查看上一个学生信息。
- 按钮cmdNext:用于查看下一个学生信息。
- 按钮cmdLast:用于查看最后一个学生信息。
在窗体的代码模块中,添加以下VBA代码:
```
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Private Sub UserForm_Initialize()
' Open connection to Excel table
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 12.0;"
conn.Open
' Open recordset for student table
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM [Sheet1$]", conn, adOpenStatic, adLockOptimistic
' Move to first record and display student information
rs.MoveFirst
DisplayStudentInformation
End Sub
Private Sub UserForm_Terminate()
' Close recordset and connection
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
End Sub
Private Sub cmdAdd_Click()
' Add new student information to the Excel table
rs.AddNew
UpdateStudentInformation
rs.Update
MsgBox "New student information added successfully!", vbInformation, "Success"
End Sub
Private Sub cmdUpdate_Click()
' Update current student information in the Excel table
UpdateStudentInformation
rs.Update
MsgBox "Student information updated successfully!", vbInformation, "Success"
End Sub
Private Sub cmdDelete_Click()
' Delete current student information from the Excel table
rs.Delete
rs.MoveFirst
DisplayStudentInformation
MsgBox "Student information deleted successfully!", vbInformation, "Success"
End Sub
Private Sub cmdFirst_Click()
' Move to the first record and display student information
rs.MoveFirst
DisplayStudentInformation
End Sub
Private Sub cmdPrevious_Click()
' Move to the previous record and display student information
If Not rs.BOF Then
rs.MovePrevious
DisplayStudentInformation
End If
End Sub
Private Sub cmdNext_Click()
' Move to the next record and display student information
If Not rs.EOF Then
rs.MoveNext
DisplayStudentInformation
End If
End Sub
Private Sub cmdLast_Click()
' Move to the last record and display student information
rs.MoveLast
DisplayStudentInformation
End Sub
Private Sub DisplayStudentInformation()
' Display student information in the user form
txtName.Value = rs.Fields("姓名").Value
txtGender.Value = rs.Fields("性别").Value
txtAge.Value = rs.Fields("年龄").Value
txtGrade.Value = rs.Fields("年级").Value
txtAddress.Value = rs.Fields("地址").Value
End Sub
Private Sub UpdateStudentInformation()
' Update student information from the user form
rs.Fields("姓名").Value = txtName.Value
rs.Fields("性别").Value = txtGender.Value
rs.Fields("年龄").Value = txtAge.Value
rs.Fields("年级").Value = txtGrade.Value
rs.Fields("地址").Value = txtAddress.Value
End Sub
```
这段代码使用了ADO对象来访问Excel表格中的数据。在窗体初始化时,它打开了Excel表格并创建了一个Recordset对象来访问“Sheet1”工作表中的学生信息。当用户单击添加、更新或删除按钮时,它会更新Recordset对象并将更改保存到Excel表格中。当用户单击导航按钮时,它会移动Recordset对象的当前记录并在用户窗体中显示新的学生信息。
最后,您需要将用户窗体与VBA代码关联。您可以使用VBA的事件处理程序来响应用户在窗体中的操作。例如,当用户单击“添加”按钮时,您可以编写以下代码来添加新学生信息:
```
Private Sub cmdAdd_Click()
' Add new student information to the Excel table
rs.AddNew
UpdateStudentInformation
rs.Update
MsgBox "New student information added successfully!", vbInformation, "Success"
End Sub
```
这是一个基本的VBA和Excel学生管理系统的示例。您可以根据自己的需求进行修改和扩展。希望这可以帮助到您!
阅读全文