Excel VBA 人员信息管理
系统截图:
登录窗体加载代码:
1 Sub Auto_Open() 2 '自动加载窗体 3 login.Show 4 End Sub
“统计”按钮
1 Sub 按钮1_单击() 2 3 '查看总记录数 4 5 x = 2 '数据源表中第一条记录所在的行号 6 Dim counts As Integer 7 counts = 0 8 Do While Sheet1.Cells(x, 2) <> "" '当遇到空行时结束 9 counts = counts + 1 10 x = x + 1 11 Loop 12 Sheet4.Cells(5, 5) = counts '将总的记录数保存到指定单元格 13 End Sub
打印所选人员信息
1 Sub 按钮2_单击() 2 3 '执行打印选择人员基本信息 4 5 6 xm = Sheet4.Cells(7, 5) '从 系统功能表 中获取选择的姓名 7 8 If xm = "" Then '如果未选择,则提示选择 9 MsgBox "请选择人员!" 10 End If 11 12 '从 基本数据表 中通过姓名查找此人所在行号,rowxm保存此人所在行的行号 13 rowxm = 0 '初始值为0 14 i = 2 15 Do While Not IsEmpty(Sheet1.Cells(i, 2)) 16 17 If xm = Sheet1.Cells(i, 2) Then 18 rowxm = i 19 'MsgBox "所在行号为:" + Trim(Str(i)) 20 Exit Do 21 End If 22 i = i + 1 23 Loop 24 25 26 If rowxm <> 0 Then 27 '打印提示信息,flag2的值有两个:1表示打印,2表示不打印 28 flag2 = MsgBox("您将打印" & xm & "的基本信息!", 1) 29 30 If flag2 = 1 Then 31 32 Sheet2.Visible = True 33 Sheet2.Activate 34 35 36 '将 基本数据表 中的相关信息填充到 打印 表中的相应位置 37 Sheet2.Cells(2, 2) = Sheet1.Cells(rowxm, 1) '单位 38 Sheet2.Cells(3, 2) = Sheet1.Cells(rowxm, 2) '姓名 39 Sheet2.Cells(3, 5) = Sheet1.Cells(rowxm, 3) '性别 40 Sheet2.Cells(4, 2) = Sheet1.Cells(rowxm, 4) '民族 41 Sheet2.Cells(4, 4) = Sheet1.Cells(rowxm, 5) '政治面貌 42 Sheet2.Cells(5, 2) = Sheet1.Cells(rowxm, 6) '出生日期 43 Sheet2.Cells(5, 4) = Sheet1.Cells(rowxm, 7) '出生地 44 Sheet2.Cells(6, 2) = Sheet1.Cells(rowxm, 8) '毕业学校 45 Sheet2.Cells(7, 2) = Sheet1.Cells(rowxm, 9) '所学专业 46 Sheet2.Cells(8, 2) = Sheet1.Cells(rowxm, 10) '学位 47 Sheet2.Cells(8, 7) = Sheet1.Cells(rowxm, 11) '学历 48 Sheet2.Cells(9, 2) = Sheet1.Cells(rowxm, 12) '现职业 49 Sheet2.Cells(9, 7) = Sheet1.Cells(rowxm, 13) '职务 50 Sheet2.Cells(10, 2) = Sheet1.Cells(rowxm, 14) '地址 51 Sheet2.Cells(10, 8) = Sheet1.Cells(rowxm, 15) '邮编 52 Sheet2.Cells(11, 2) = Sheet1.Cells(rowxm, 16) '电话 53 Sheet2.Cells(11, 7) = Sheet1.Cells(rowxm, 17) '邮箱 54 Sheet2.Cells(12, 3) = Sheet1.Cells(rowxm, 18) '学科 55 Sheet2.Cells(13, 3) = Sheet1.Cells(rowxm, 19) '身份证 56 Sheet2.Cells(16, 1) = Sheet1.Cells(rowxm, 20) 57 Sheet2.Cells(16, 7) = Sheet1.Cells(rowxm, 21) 58 Sheet2.Cells(16, 3) = Sheet1.Cells(rowxm, 22) 59 Sheet2.Cells(16, 8) = Sheet1.Cells(rowxm, 23) 60 Sheet2.Cells(17, 1) = Sheet1.Cells(rowxm, 24) 61 Sheet2.Cells(17, 7) = Sheet1.Cells(rowxm, 25) 62 Sheet2.Cells(17, 3) = Sheet1.Cells(rowxm, 26) 63 Sheet2.Cells(17, 8) = Sheet1.Cells(rowxm, 27) 64 Sheet2.Cells(18, 1) = Sheet1.Cells(rowxm, 28) 65 Sheet2.Cells(18, 7) = Sheet1.Cells(rowxm, 29) 66 Sheet2.Cells(18, 3) = Sheet1.Cells(rowxm, 30) 67 Sheet2.Cells(18, 8) = Sheet1.Cells(rowxm, 31) 68 Sheet2.Cells(19, 1) = Sheet1.Cells(rowxm, 32) 69 Sheet2.Cells(19, 7) = Sheet1.Cells(rowxm, 33) 70 Sheet2.Cells(19, 3) = Sheet1.Cells(rowxm, 34) 71 Sheet2.Cells(19, 8) = Sheet1.Cells(rowxm, 35) 72 Sheet2.Cells(20, 3) = Sheet1.Cells(rowxm, 36) 73 Sheet2.Cells(21, 3) = Sheet1.Cells(rowxm, 37) 74 Sheet2.Cells(22, 3) = Sheet1.Cells(rowxm, 38) 75 Sheet2.Cells(23, 3) = Sheet1.Cells(rowxm, 39) 76 Sheet2.Cells(3, 8) = "" 77 '照片处理 78 ActiveSheet.Pictures.Delete '删除之前的照片 79 Dim MyFile As Object 80 Set MyFile = CreateObject("Scripting.FileSystemObject") 81 If MyFile.FileExists(ThisWorkbook.Path & "\照片\" & Sheet2.Cells(13, 3) & ".jpg") = True Then 82 ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\照片\" & Sheet2.Cells(13, 3) & ".jpg").Select 83 Else 84 ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\照片\shili.jpg").Select 85 End If 86 With Selection 87 .Top = Range("H3:H7").Top + 2 88 .Left = Range("H3:H7").Left + 3 89 90 .Height = Range("H3:H7").Height - 4 91 .Width = Range("H3:H7").Width - 4 92 End With 93 94 95 Range("A1:H23").Select 96 ActiveWindow.SelectedSheets.PrintPreview '打印预览 97 'Selection.PrintOut Copies:=1, Collate:=True 98 99 Sheet2.Visible = False 100 Sheet4.Activate 101 102 Else 103 MsgBox "您已取消打印~!" 104 End If 'flag2判断是否打印 结束 105 End If '选择的姓名存在对应的行号 106 107 Sheet4.Cells(7, 5) = Sheet1.Cells(2, 2) 108 End Sub
“修改”所选人员信息视图
1 Sub 按钮3_单击() 2 3 '修改一人---视图 4 5 xm = Sheet4.Cells(9, 5) '从 系统功能表 中获取选择的姓名 6 If xm = "" Then '如果未选择,则提示选择 7 MsgBox "请选择人员!" 8 End If 9 10 '从 基本数据表 中通过姓名查找此人所在行号,rowxm保存此人所在行的行号 11 rowxm = 0 '初始值为0 12 i = 2 13 Do While Not IsEmpty(Sheet1.Cells(i, 2)) 14 15 If xm = Sheet1.Cells(i, 2) Then 16 rowxm = i 17 'MsgBox "所在行号为:" + Trim(Str(i)) 18 Exit Do 19 End If 20 i = i + 1 21 Loop 22 23 24 If rowxm <> 0 Then '找到之后 25 26 Sheet6.Visible = True 27 Sheet6.Activate 28 29 30 '将 基本数据表 中的相关信息填充到 打印 表中的相应位置 31 Sheet6.Cells(2, 2) = Sheet1.Cells(rowxm, 1) '单位 32 Sheet6.Cells(3, 2) = Sheet1.Cells(rowxm, 2) '姓名 33 Sheet6.Cells(3, 5) = Sheet1.Cells(rowxm, 3) '性别 34 Sheet6.Cells(4, 2) = Sheet1.Cells(rowxm, 4) '民族 35 Sheet6.Cells(4, 4) = Sheet1.Cells(rowxm, 5) '政治面貌 36 Sheet6.Cells(5, 2) = Sheet1.Cells(rowxm, 6) '出生日期 37 Sheet6.Cells(5, 4) = Sheet1.Cells(rowxm, 7) '出生地 38 Sheet6.Cells(6, 2) = Sheet1.Cells(rowxm, 8) '毕业学校 39 Sheet6.Cells(7, 2) = Sheet1.Cells(rowxm, 9) '所学专业 40 Sheet6.Cells(8, 2) = Sheet1.Cells(rowxm, 10) '学位 41 Sheet6.Cells(8, 7) = Sheet1.Cells(rowxm, 11) '学历 42 Sheet6.Cells(9, 2) = Sheet1.Cells(rowxm, 12) '现职业 43 Sheet6.Cells(9, 7) = Sheet1.Cells(rowxm, 13) '职务 44 Sheet6.Cells(10, 2) = Sheet1.Cells(rowxm, 14) '地址 45 Sheet6.Cells(10, 8) = Sheet1.Cells(rowxm, 15) '邮编 46 Sheet6.Cells(11, 2) = Sheet1.Cells(rowxm, 16) '电话 47 Sheet6.Cells(11, 7) = Sheet1.Cells(rowxm, 17) '邮箱 48 Sheet6.Cells(12, 3) = Sheet1.Cells(rowxm, 18) '学科 49 Sheet6.Cells(13, 3) = Sheet1.Cells(rowxm, 19) '身份证 50 Sheet6.Cells(16, 1) = Sheet1.Cells(rowxm, 20) 51 Sheet6.Cells(16, 7) = Sheet1.Cells(rowxm, 21) 52 Sheet6.Cells(16, 3) = Sheet1.Cells(rowxm, 22) 53 Sheet6.Cells(16, 8) = Sheet1.Cells(rowxm, 23) 54 Sheet6.Cells(17, 1) = Sheet1.Cells(rowxm, 24) 55 Sheet6.Cells(17, 7) = Sheet1.Cells(rowxm, 25) 56 Sheet6.Cells(17, 3) = Sheet1.Cells(rowxm, 26) 57 Sheet6.Cells(17, 8) = Sheet1.Cells(rowxm, 27) 58 Sheet6.Cells(18, 1) = Sheet1.Cells(rowxm, 28) 59 Sheet6.Cells(18, 7) = Sheet1.Cells(rowxm, 29) 60 Sheet6.Cells(18, 3) = Sheet1.Cells(rowxm, 30) 61 Sheet6.Cells(18, 8) = Sheet1.Cells(rowxm, 31) 62 Sheet6.Cells(19, 1) = Sheet1.Cells(rowxm, 32) 63 Sheet6.Cells(19, 7) = Sheet1.Cells(rowxm, 33) 64 Sheet6.Cells(19, 3) = Sheet1.Cells(rowxm, 34) 65 Sheet6.Cells(19, 8) = Sheet1.Cells(rowxm, 35) 66 Sheet6.Cells(20, 3) = Sheet1.Cells(rowxm, 36) 67 Sheet6.Cells(21, 3) = Sheet1.Cells(rowxm, 37) 68 Sheet6.Cells(22, 3) = Sheet1.Cells(rowxm, 38) 69 Sheet6.Cells(23, 3) = Sheet1.Cells(rowxm, 39) 70 71 72 End If '选择的姓名存在对应的行号 73 Sheet4.Cells(9, 5) = Sheet1.Cells(2, 2) 74 End Sub
“修改”所选人员信息:处理
1 Sub 按钮3_1_单击() 2 3 '修改一人---提交修改 4 5 Sheet6.Activate 6 ActiveWorkbook.Save '将修改进行系统保存 7 xm = Sheet6.Cells(3, 2) 8 '从 基本数据表 中通过姓名查找此人所在行号,rowxm保存此人所在行的行号 9 rowxm = 0 '初始值为0 10 i = 2 11 Do While Not IsEmpty(Sheet1.Cells(i, 2)) 12 13 If xm = Sheet1.Cells(i, 2) Then 14 rowxm = i 15 'MsgBox "所在行号为:" + Trim(Str(i)) 16 Exit Do 17 End If 18 i = i + 1 19 Loop 20 21 If rowxm <> 0 Then '找到之后,写到基本数据表相应行中 22 23 '将 基本数据表 中的相关信息填充到 打印 表中的相应位置 24 Sheet1.Cells(rowxm, 1) = Sheet6.Cells(2, 2) '单位 25 'Sheet1.Cells(rowxm, 2) = Sheet6.Cells(3, 2) '姓名不改变 26 Sheet1.Cells(rowxm, 3) = Sheet6.Cells(3, 5) '性别 27 Sheet1.Cells(rowxm, 4) = Sheet6.Cells(4, 2) 28 Sheet1.Cells(rowxm, 5) = Sheet6.Cells(4, 4) 29 Sheet1.Cells(rowxm, 6) = Sheet6.Cells(5, 2) 30 Sheet1.Cells(rowxm, 7) = Sheet6.Cells(5, 4) 31 Sheet1.Cells(rowxm, 8) = Sheet6.Cells(6, 2) 32 Sheet1.Cells(rowxm, 9) = Sheet6.Cells(7, 2) 33 Sheet1.Cells(rowxm, 10) = Sheet6.Cells(8, 2) 34 Sheet1.Cells(rowxm, 11) = Sheet6.Cells(8, 7) 35 Sheet1.Cells(rowxm, 12) = Sheet6.Cells(9, 2) 36 Sheet1.Cells(rowxm, 13) = Sheet6.Cells(9, 7) 37 Sheet1.Cells(rowxm, 14) = Sheet6.Cells(10, 2) 38 Sheet1.Cells(rowxm, 15) = Sheet6.Cells(10, 8) 39 Sheet1.Cells(rowxm, 16) = Sheet6.Cells(11, 2) 40 Sheet1.Cells(rowxm, 17) = Sheet6.Cells(11, 7) 41 Sheet1.Cells(rowxm, 18) = Sheet6.Cells(12, 3) 42 Sheet1.Cells(rowxm, 19) = Sheet6.Cells(13, 3) 43 Sheet1.Cells(rowxm, 20) = Sheet6.Cells(16, 1) 44 Sheet1.Cells(rowxm, 21) = Sheet6.Cells(16, 7) 45 Sheet1.Cells(rowxm, 22) = Sheet6.Cells(16, 3) 46 Sheet1.Cells(rowxm, 23) = Sheet6.Cells(16, 8) 47 Sheet1.Cells(rowxm, 24) = Sheet6.Cells(17, 1) 48 Sheet1.Cells(rowxm, 25) = Sheet6.Cells(17, 7) 49 Sheet1.Cells(rowxm, 26) = Sheet6.Cells(17, 3) 50 Sheet1.Cells(rowxm, 27) = Sheet6.Cells(17, 8) 51 Sheet1.Cells(rowxm, 28) = Sheet6.Cells(18, 1) 52 Sheet1.Cells(rowxm, 29) = Sheet6.Cells(18, 7) 53 Sheet1.Cells(rowxm, 30) = Sheet6.Cells(18, 3) 54 Sheet1.Cells(rowxm, 31) = Sheet6.Cells(18, 8) 55 Sheet1.Cells(rowxm, 32) = Sheet6.Cells(19, 1) 56 Sheet1.Cells(rowxm, 33) = Sheet6.Cells(19, 7) 57 Sheet1.Cells(rowxm, 34) = Sheet6.Cells(19, 3) 58 Sheet1.Cells(rowxm, 35) = Sheet6.Cells(19, 8) 59 Sheet1.Cells(rowxm, 36) = Sheet6.Cells(20, 3) 60 Sheet1.Cells(rowxm, 37) = Sheet6.Cells(21, 3) 61 Sheet1.Cells(rowxm, 38) = Sheet6.Cells(22, 3) 62 Sheet1.Cells(rowxm, 39) = Sheet6.Cells(23, 3) 63 64 End If '选择的姓名存在对应的行号 65 66 Sheet6.Visible = False 67 Sheet4.Activate 68 69 End Sub
“删除”所选人员信息
1 Sub 按钮4_单击() 2 3 '删除选择人员 4 xm = Sheet4.Cells(11, 5) '从 系统功能表 中获取选择的姓名 5 If xm = "" Then '如果未选择,则提示选择 6 MsgBox "请选择人员!" 7 End If 8 9 '从 基本数据表 中通过姓名查找此人所在行号,rowxm保存此人所在行的行号 10 rowxm = 0 '初始值为0 11 i = 2 12 Do While Not IsEmpty(Sheet1.Cells(i, 2)) 13 14 If xm = Sheet1.Cells(i, 2) Then 15 rowxm = i 16 'MsgBox "所在行号为:" + Trim(Str(i)) 17 Exit Do 18 End If 19 i = i + 1 20 Loop 21 22 23 If rowxm <> 0 Then '找到之后删除 24 flag2 = MsgBox("您确定要删除" & xm & "的基本信息!", 1) 25 If flag2 = 1 Then 26 'Sheet1.Visible = True 27 Sheet1.Activate 28 Rows(rowxm & ":" & rowxm).Select 29 Selection.Delete Shift:=xlUp 30 ActiveWorkbook.Save '数据保存 31 Else 32 MsgBox ("您已取消删除!") 33 End If 34 End If '选择的姓名存在对应的行号 35 Sheet4.Cells(11, 5) = Sheet1.Cells(2, 2) 36 37 '重新统计人数 38 x = 2 '数据源表中第一条记录所在的行号 39 Dim counts As Integer 40 counts = 0 41 Do While Sheet1.Cells(x, 2) <> "" '当遇到空行时结束 42 counts = counts + 1 43 x = x + 1 44 Loop 45 Sheet4.Cells(5, 5) = counts '将总的记录数保存到指定单元格 46 47 'Sheet1.Visible = False 48 Sheet4.Activate 49 End Sub
“打印所有人员信息”
1 Sub 按钮5_单击() 2 3 '执行打印所有人员信息 4 5 '找到最后一条记录的行号,保存到rowxm中 6 flag = 1 '1表示是一个新人,2表示已经存在 7 i = 2 8 Do While Not IsEmpty(Sheet1.Cells(i, 2)) 9 i = i + 1 10 Loop 11 rowxm = i - 1 12 13 '打印提示信息,flag2的值有两个:1表示打印,2表示不打印 14 flag2 = MsgBox("您将打印" & (i - 2) & "名人员基本信息表!", 1) 15 16 If flag2 = 1 Then 17 18 Sheet2.Visible = True 19 Sheet2.Activate 20 For i = 2 To rowxm 21 On Error GoTo over '对用户打印过程中取消打印时的处理 22 '将 基本数据表 中的相关信息填充到 打印 表中的相应位置 23 Sheet2.Cells(2, 2) = Sheet1.Cells(i, 1) '单位 24 Sheet2.Cells(3, 2) = Sheet1.Cells(i, 2) '姓名 25 Sheet2.Cells(3, 5) = Sheet1.Cells(i, 3) '性别 26 Sheet2.Cells(4, 2) = Sheet1.Cells(i, 4) '民族 27 Sheet2.Cells(4, 4) = Sheet1.Cells(i, 5) '政治面貌 28 Sheet2.Cells(5, 2) = Sheet1.Cells(i, 6) '出生日期 29 Sheet2.Cells(5, 4) = Sheet1.Cells(i, 7) '出生地 30 Sheet2.Cells(6, 2) = Sheet1.Cells(i, 8) '毕业学校 31 Sheet2.Cells(7, 2) = Sheet1.Cells(i, 9) '所学专业 32 Sheet2.Cells(8, 2) = Sheet1.Cells(i, 10) '学位 33 Sheet2.Cells(8, 7) = Sheet1.Cells(i, 11) '学历 34 Sheet2.Cells(9, 2) = Sheet1.Cells(i, 12) '现职业 35 Sheet2.Cells(9, 7) = Sheet1.Cells(i, 13) '职务 36 Sheet2.Cells(10, 2) = Sheet1.Cells(i, 14) '地址 37 Sheet2.Cells(10, 8) = Sheet1.Cells(i, 15) '邮编 38 Sheet2.Cells(11, 2) = Sheet1.Cells(i, 16) '电话 39 Sheet2.Cells(11, 7) = Sheet1.Cells(i, 17) '邮箱 40 Sheet2.Cells(12, 3) = Sheet1.Cells(i, 18) '学科 41 Sheet2.Cells(13, 3) = Sheet1.Cells(i, 19) '身份证 42 Sheet2.Cells(16, 1) = Sheet1.Cells(i, 20) 43 Sheet2.Cells(16, 7) = Sheet1.Cells(i, 21) 44 Sheet2.Cells(16, 3) = Sheet1.Cells(i, 22) 45 Sheet2.Cells(16, 8) = Sheet1.Cells(i, 23) 46 Sheet2.Cells(17, 1) = Sheet1.Cells(i, 24) 47 Sheet2.Cells(17, 7) = Sheet1.Cells(i, 25) 48 Sheet2.Cells(17, 3) = Sheet1.Cells(i, 26) 49 Sheet2.Cells(17, 8) = Sheet1.Cells(i, 27) 50 Sheet2.Cells(18, 1) = Sheet1.Cells(i, 28) 51 Sheet2.Cells(18, 7) = Sheet1.Cells(i, 29) 52 Sheet2.Cells(18, 3) = Sheet1.Cells(i, 30) 53 Sheet2.Cells(18, 8) = Sheet1.Cells(i, 31) 54 Sheet2.Cells(19, 1) = Sheet1.Cells(i, 32) 55 Sheet2.Cells(19, 7) = Sheet1.Cells(i, 33) 56 Sheet2.Cells(19, 3) = Sheet1.Cells(i, 34) 57 Sheet2.Cells(19, 8) = Sheet1.Cells(i, 35) 58 Sheet2.Cells(20, 3) = Sheet1.Cells(i, 36) 59 Sheet2.Cells(21, 3) = Sheet1.Cells(i, 37) 60 Sheet2.Cells(22, 3) = Sheet1.Cells(i, 38) 61 Sheet2.Cells(23, 3) = Sheet1.Cells(i, 39) 62 Sheet2.Cells(3, 8) = "" 63 '照片处理 64 ActiveSheet.Pictures.Delete '删除之前的照片 65 Dim MyFile As Object 66 Set MyFile = CreateObject("Scripting.FileSystemObject") 67 If MyFile.FileExists(ThisWorkbook.Path & "\照片\" & Sheet2.Cells(13, 3) & ".jpg") = True Then 68 ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\照片\" & Sheet2.Cells(13, 3) & ".jpg").Select 69 Else 70 ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\照片\shili.jpg").Select 71 End If 72 73 'ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\照片\" & Sheet2.Cells(13, 3) & ".jpg").Select 74 With Selection 75 .Top = Range("H3:H7").Top 76 .Left = Range("H3:H7").Left 77 78 .Height = Range("H3:H7").Height 79 .Width = Range("H3:H7").Width 80 End With 81 82 Range("A1:H23").Select 83 Selection.PrintOut Copies:=1, Collate:=True 84 85 Next 86 over: '对用户打印过程中取消打印时的处理 87 Sheet2.Visible = False 88 Sheet4.Activate 89 90 91 Else 92 MsgBox "您已取消打印~!" 93 End If 'flag2判断是否打印 结束 94 95 End Sub
“查看基本表”信息
1 Sub 按钮6_单击() 2 3 '查看基本数据表 4 '密码验证 5 Dim mm As String 6 7 mm = InputBox("请输入系统登录密码:", 信息查看前验证, "") 8 If mm = "" Then 9 MsgBox "请输入系统登录密码,通过后方可查看!" 10 Exit Sub 11 End If 12 If mm <> Sheet5.Cells(2, 2) Then 13 MsgBox "密码错误!" 14 Exit Sub 15 End If 16 17 If mm = Sheet5.Cells(2, 2) Then 18 Sheet1.Visible = True 19 Sheet1.Activate 20 End If 21 22 End Sub
“隐藏”基本数据表
1 Sub 按钮7_单击() 2 3 '隐藏基本数据表 4 5 Sheet1.Visible = False 6 Sheet4.Activate 7 8 End Sub
“添加一人”视图
1 Sub 按钮8_单击() 2 3 '添加一人---视图 4 Sheet6.Visible = True 5 Sheet6.Activate 6 '清空添加表中输入的数据 7 Sheet6.Cells(2, 2) = "" 8 Sheet6.Cells(3, 2) = "" 9 Sheet6.Cells(3, 5) = "" 10 Sheet6.Cells(4, 2) = "" 11 Sheet6.Cells(4, 4) = "" 12 Sheet6.Cells(5, 2) = "" 13 Sheet6.Cells(5, 4) = "" 14 Sheet6.Cells(6, 2) = "" 15 Sheet6.Cells(7, 2) = "" 16 Sheet6.Cells(8, 2) = "" 17 Sheet6.Cells(8, 7) = "" 18 Sheet6.Cells(9, 2) = "" 19 Sheet6.Cells(9, 7) = "" 20 Sheet6.Cells(10, 2) = "" 21 Sheet6.Cells(10, 8) = "" 22 Sheet6.Cells(11, 2) = "" 23 Sheet6.Cells(11, 7) = "" 24 Sheet6.Cells(12, 3) = "" 25 Sheet6.Cells(13, 3) = "" 26 Sheet6.Cells(16, 1) = "" 27 Sheet6.Cells(16, 7) = "" 28 Sheet6.Cells(16, 3) = "" 29 Sheet6.Cells(16, 8) = "" 30 Sheet6.Cells(17, 1) = "" 31 Sheet6.Cells(17, 7) = "" 32 Sheet6.Cells(17, 3) = "" 33 Sheet6.Cells(17, 8) = "" 34 Sheet6.Cells(18, 1) = "" 35 Sheet6.Cells(18, 7) = "" 36 Sheet6.Cells(18, 3) = "" 37 Sheet6.Cells(18, 8) = "" 38 Sheet6.Cells(19, 1) = "" 39 Sheet6.Cells(19, 7) = "" 40 Sheet6.Cells(19, 3) = "" 41 Sheet6.Cells(19, 8) = "" 42 Sheet6.Cells(20, 3) = "" 43 Sheet6.Cells(21, 3) = "" 44 Sheet6.Cells(22, 3) = "" 45 Sheet6.Cells(23, 3) = "" 46 47 End Sub
“添加一人”处理:
1 Sub 按钮8_1_单击() 2 3 '添加一人---提交添加 4 5 Sheet6.Activate '确保添加工作表处于激活状态 6 ActiveWorkbook.Save '将 添加工作表 进行系统保存 7 8 xm = Sheet6.Cells(3, 2) '检查该人员是否已经存在 9 10 '找到第一个出现的空行的行号,保存到rowxm中 11 flag = 1 '1表示是一个新人,2表示已经存在 12 i = 2 13 Do While Not IsEmpty(Sheet1.Cells(i, 2)) 14 If xm = Sheet1.Cells(i, 2) Then 15 flag = 2 16 MsgBox "该人员已经存在,请修改后重新添加!" 17 Exit Do 18 End If 19 i = i + 1 20 Loop 21 rowxm = i 22 23 If flag = 1 Then '是新人员,'将输入的基本信息保存到 基本数据表 中 24 25 26 Sheet1.Cells(rowxm, 1) = Sheet6.Cells(2, 2) '单位 27 Sheet1.Cells(rowxm, 2) = Sheet6.Cells(3, 2) '姓名不改变 28 Sheet1.Cells(rowxm, 3) = Sheet6.Cells(3, 5) '性别 29 Sheet1.Cells(rowxm, 4) = Sheet6.Cells(4, 2) 30 Sheet1.Cells(rowxm, 5) = Sheet6.Cells(4, 4) 31 Sheet1.Cells(rowxm, 6) = Sheet6.Cells(5, 2) 32 Sheet1.Cells(rowxm, 7) = Sheet6.Cells(5, 4) 33 Sheet1.Cells(rowxm, 8) = Sheet6.Cells(6, 2) 34 Sheet1.Cells(rowxm, 9) = Sheet6.Cells(7, 2) 35 Sheet1.Cells(rowxm, 10) = Sheet6.Cells(8, 2) 36 Sheet1.Cells(rowxm, 11) = Sheet6.Cells(8, 7) 37 Sheet1.Cells(rowxm, 12) = Sheet6.Cells(9, 2) 38 Sheet1.Cells(rowxm, 13) = Sheet6.Cells(9, 7) 39 Sheet1.Cells(rowxm, 14) = Sheet6.Cells(10, 2) 40 Sheet1.Cells(rowxm, 15) = Sheet6.Cells(10, 8) 41 Sheet1.Cells(rowxm, 16) = Sheet6.Cells(11, 2) 42 Sheet1.Cells(rowxm, 17) = Sheet6.Cells(11, 7) 43 Sheet1.Cells(rowxm, 18) = Sheet6.Cells(12, 3) 44 Sheet1.Cells(rowxm, 19) = Sheet6.Cells(13, 3) 45 Sheet1.Cells(rowxm, 20) = Sheet6.Cells(16, 1) 46 Sheet1.Cells(rowxm, 21) = Sheet6.Cells(16, 7) 47 Sheet1.Cells(rowxm, 22) = Sheet6.Cells(16, 3) 48 Sheet1.Cells(rowxm, 23) = Sheet6.Cells(16, 8) 49 Sheet1.Cells(rowxm, 24) = Sheet6.Cells(17, 1) 50 Sheet1.Cells(rowxm, 25) = Sheet6.Cells(17, 7) 51 Sheet1.Cells(rowxm, 26) = Sheet6.Cells(17, 3) 52 Sheet1.Cells(rowxm, 27) = Sheet6.Cells(17, 8) 53 Sheet1.Cells(rowxm, 28) = Sheet6.Cells(18, 1) 54 Sheet1.Cells(rowxm, 29) = Sheet6.Cells(18, 7) 55 Sheet1.Cells(rowxm, 30) = Sheet6.Cells(18, 3) 56 Sheet1.Cells(rowxm, 31) = Sheet6.Cells(18, 8) 57 Sheet1.Cells(rowxm, 32) = Sheet6.Cells(19, 1) 58 Sheet1.Cells(rowxm, 33) = Sheet6.Cells(19, 7) 59 Sheet1.Cells(rowxm, 34) = Sheet6.Cells(19, 3) 60 Sheet1.Cells(rowxm, 35) = Sheet6.Cells(19, 8) 61 Sheet1.Cells(rowxm, 36) = Sheet6.Cells(20, 3) 62 Sheet1.Cells(rowxm, 37) = Sheet6.Cells(21, 3) 63 Sheet1.Cells(rowxm, 38) = Sheet6.Cells(22, 3) 64 Sheet1.Cells(rowxm, 39) = Sheet6.Cells(23, 3) 65 Sheet1.Activate '确保添加工作表处于激活状态 66 ActiveWorkbook.Save '将修改进行系统保存 67 68 Sheet6.Visible = False 69 70 '重新统计人数 71 x = 2 '数据源表中第一条记录所在的行号 72 Dim counts As Integer 73 counts = 0 74 Do While Sheet1.Cells(x, 2) <> "" '当遇到空行时结束 75 counts = counts + 1 76 x = x + 1 77 Loop 78 Sheet4.Cells(5, 5) = counts '将总的记录数保存到指定单元格 79 80 Sheet4.Activate 81 End If 82 83 End Sub
“添加或修改”取消操作
1 Sub 按钮9_单击() 2 3 '添加或修改的取消操作 4 Sheet6.Visible = False 5 Sheet4.Activate 6 End Sub
“安全退出”
1 Sub 按钮10_单击() 2 3 '安全退出:隐藏除系统功能表外的其他工作表,并对所有工作表进行保存操作 4 5 Sheet1.Visible = False 6 Sheet2.Visible = False 7 Sheet4.Visible = False 8 Sheet5.Visible = False 9 Sheet6.Visible = False 10 'ActiveWorkbook.Close Savechanges:=True 11 ActiveWorkbook.Save 12 'Application.Quit 13 14 Sheet3.Activate 15 Range("A1").Select 16 login.TextBox1.Text = "" 17 login.TextBox2.Text = "" 18 login.Show 19 20 End Sub
“身份证”校验
1 Sub 按钮11_单击() 2 3 '校验身份证 4 Result = getCheckCode(Sheet6.Cells(13, 3)) '返回的值为两部分,第一个数字为错误序号,第二个数字为正确校验码 5 Result2 = Left(Result, 1) 6 Select Case Result2 7 Case "0": MsgBox "身份证位数错误!" 8 Case "1": MsgBox "身份证校验通过!" 9 Case "2": MsgBox "身份证错误,校验位应为:" & Right(Result, 1) 10 End Select 11 End Sub 12 13 '身份证相关的两个方法 14 Function getCheckCode(strSFID As String) As String 15 16 Dim sreJiaoYan As Variant 17 Dim intQuan As Variant 18 Dim strTemp As String '身份证号码前17位 19 Dim intTemp As Variant '保存计算出的校验位 20 Dim i As Integer 21 22 strJiaoYan = Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2") 23 intJiaQuan = Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1) 24 25 If Len(strSFID) = 18 Then 26 strTemp = Left(strSFID, 17) 27 'MsgBox "输入位数正确~!" 28 Else 29 getCheckCode = "00" '输入位数不正确~! 30 Exit Function 31 End If 32 33 '求身份证号码验证位 34 For i = 0 To Len(strTemp) - 1 35 intTemp = intTemp + Mid(strTemp, i + 1, 1) * intJiaQuan(i) 36 Next i 37 'MsgBox "加权和为:" & intTemp 38 39 intTemp = intTemp Mod 11 40 'MsgBox "余数为:" & intTemp 41 intTemp = strJiaoYan(intTemp) 42 'MsgBox "验证位为:" & intTemp 43 44 If intTemp = Right(strSFID, 1) Then 45 46 getCheckCode = "1" & intTemp '身份证号码正确! 47 'Selection.Font.ColorIndex = 10 48 Else 49 50 getCheckCode = "2" & intTemp '身份证号码错误 51 End If 52 End Function 53 54 55 Function getPosition(x As Integer, y As Integer) As String 56 '将单元格cells(x,y)的形式表示成Range("A1")的形式 57 Dim A_Z As Variant 58 Dim pos As String 59 A_Z = Array("zw", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z") 60 pos = A_Z(y) & x 61 getPosition = pos 62 End Function
===================================以下窗体login代码
'****************************************
'---此模块演示了去除窗体关闭按钮---
'****************************************
1 Option Explicit 2 '以下声明API函数 3 #If Win64 Then '64位 4 Private Declare PtrSafe Function FindWindow _ 5 Lib "User32" _ 6 Alias "FindWindowA" ( _ 7 ByVal lpClassName As String, _ 8 ByVal lpWindowName As String) _ 9 As LongPtr 10 Private Declare PtrSafe Function GetWindowLong _ 11 Lib "User32" _ 12 Alias "GetWindowLongPtrA" ( _ 13 ByVal Hwnd As LongPtr, _ 14 ByVal nIndex As Long) _ 15 As LongPtr 16 Private Declare PtrSafe Function SetWindowLong _ 17 Lib "User32" _ 18 Alias "SetWindowLongPtrA" ( _ 19 ByVal Hwnd As LongPtr, _ 20 ByVal nIndex As Long, _ 21 ByVal dwNewLong As LongPtr) _ 22 As LongPtr 23 Private Declare PtrSafe Function DrawMenuBar _ 24 Lib "User32" _ 25 ( _ 26 ByVal Hwnd As LongPtr) _ 27 As Long 28 #Else '32位 29 '查找窗口 30 Private Declare Function FindWindow _ 31 Lib "User32" _ 32 Alias "FindWindowA" ( _ 33 ByVal lpClassName As String, _ 34 ByVal lpWindowName As String) _ 35 As Long 36 '取得窗口样式位 37 Private Declare Function GetWindowLong _ 38 Lib "User32" _ 39 Alias "GetWindowLongA" ( _ 40 ByVal Hwnd As Long, _ 41 ByVal nIndex As Long) _ 42 As Long 43 '设置窗口样式位 44 Private Declare Function SetWindowLong _ 45 Lib "User32" _ 46 Alias "SetWindowLongA" ( _ 47 ByVal Hwnd As Long, _ 48 ByVal nIndex As Long, _ 49 ByVal dwNewLong As Long) _ 50 As Long 51 '重绘窗体标题栏 52 Private Declare Function DrawMenuBar _ 53 Lib "User32" ( _ 54 ByVal Hwnd As Long) _ 55 As Long 56 #End If 57 #If Win64 Then '64位 58 Private FHwnd As LongPtr 59 Private FIstype As LongPtr 60 #Else 61 Private FHwnd As Long 62 Private FIstype As Long 63 #End If 64 '以下定义常数 65 Private Const GWL_STYLE = (-16) '窗口样式 66 Private Const WS_SYSMENU = &H80000 '系统菜单
验证登录
68 Private Sub CommandButton1_Click() 69 '系统保存的账户和密码 70 'Sheet1.Activate 71 '用户输入的账户和密码 72 Dim uname As String 73 Dim upass As String 74 Dim zh As String 75 Dim mm As String 76 77 uname = Trim(login.TextBox1.Text) 78 upass = Trim(login.TextBox2.Text) 79 80 If uname = "" Or upass = "" Then 81 MsgBox "请输入帐号和密码!" 82 Exit Sub 83 End If 84 85 If Trim(login.CommandButton1.Caption) = "注册" And Sheet5.Cells(2, 1) = "" Then 86 Sheet5.Cells(2, 1) = Trim(login.TextBox1.Text) 87 Sheet5.Cells(2, 2) = Trim(login.TextBox2.Text) 88 MsgBox "注册成功,请登录!" 89 login.Label5.Caption = "剩余次数:" & (5 - Sheet5.Cells(2, 3)) 90 login.CommandButton1.Caption = "登录" 91 login.TextBox1.Text = "" 92 login.TextBox2.Text = "" 93 Exit Sub 94 End If 95 96 97 zh = Trim(Sheet5.Cells(2, 1)) 98 mm = Trim(Sheet5.Cells(2, 2)) 99 100 If login.CommandButton1.Caption = "登录" And uname = zh And upass = mm Then 101 102 login.Hide 103 Sheet4.Visible = True 104 Sheet4.Activate 105 Range("C21").Select 106 107 Else 108 MsgBox "帐号或密码错误,请重试!" 109 login.TextBox1.Text = "" 110 login.TextBox2.Text = "" 111 End If 112 End Sub
关闭
114 Private Sub CommandButton2_Click() 115 Sheet1.Visible = False 116 Sheet2.Visible = False 117 Sheet6.Visible = False 118 Sheet4.Visible = False 119 Sheet5.Visible = False 120 Sheet3.Activate 121 Range("A1").Select 122 'ActiveWorkbook.Close Savechanges:=True 123 ActiveWorkbook.Save 124 Application.Quit 125 End Sub
忘记密码
1 Private Sub CommandButton3_Click() 2 3 Sheet5.Cells(2, 3) = Sheet5.Cells(2, 3) + 1 4 login.Label5.Caption = "剩余次数:" & (5 - Sheet5.Cells(2, 3)) 5 If Sheet5.Cells(2, 3) > 5 Then 6 login.CommandButton1.Enabled = False 7 MsgBox "您的记性太差,系统将不再提供给您使用!" 8 Exit Sub 9 End If 10 11 Sheet5.Cells(2, 1) = "" 12 Sheet5.Cells(2, 2) = "" 13 14 login.CommandButton1.Caption = "注册" 15 MsgBox "请重新注册帐号!" 16 End Sub 17 18 Private Sub UserForm_Activate() 19 If Sheet5.Cells(2, 1) <> "" Then 20 login.Label5.Caption = "剩余次数:" & (5 - Sheet5.Cells(2, 3)) 21 login.CommandButton1.Caption = "登录" 22 End If 23 End Sub
**************************************
'---------------主程序-----------------
'**************************************
1 Private Sub UserForm_Initialize() 2 '查找窗口句柄 3 FHwnd = FindWindow("ThunderDFrame", Me.Caption) 4 '取得窗口样式位 5 FIstype = GetWindowLong(FHwnd, GWL_STYLE) 6 '窗体样式位: 原样式和无系统菜单 7 FIstype = FIstype And Not WS_SYSMENU 8 '重设窗体样式位 9 SetWindowLong FHwnd, GWL_STYLE, FIstype 10 '重绘窗体标题栏 11 DrawMenuBar FHwnd 12 13 End Sub
前方是绝路,希望在转角