Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2725|回复: 8

[已解决]修改代码

[复制链接]
发表于 2013-12-28 11:50 | 显示全部楼层 |阅读模式
本帖最后由 武林长风 于 2013-12-28 14:06 编辑

下面的附件是别人的(输入的账号是123),想请大师帮忙修改一下。要求:打开excel出现提示输入账号,如输入123456789,则显示查询工作表,在查询工作表里的灰色单元格显示这个人的打卡信息,若账号连续输错3次则工作簿自杀。(打卡的全部信息在数据工作表里) 新建文件夹.rar (7.62 KB, 下载次数: 8)
 楼主| 发表于 2013-12-28 12:11 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-12-28 12:30 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-12-28 12:48 | 显示全部楼层
看来有点难度
回复

使用道具 举报

 楼主| 发表于 2013-12-28 12:51 | 显示全部楼层
只需修改提示的账号与数据工作表里的账号检验功能,对就显示相关信息,错误3次就自动删除。
回复

使用道具 举报

发表于 2013-12-28 13:28 | 显示全部楼层    本楼为最佳答案   
刚才测试的时候不小心把测试的代码文件删了
试一下这个行不行
  1. Private Sub Workbook_Open()
  2. On Error Resume Next
  3.     Static i As Byte
  4.     Dim myrow As Integer
  5.     Application.Visible = False
  6.     Sheets(1).Select
  7. star:
  8.     If i > 3 Then
  9.         KILLME
  10.     End If
  11.     XX = Application.InputBox("输入密码", "提示", Type:=1)
  12.     myrow = WorksheetFunction.Match(XX, Sheets("数据").Range("a:a"), 0)
  13.     If myrow > 0 Then
  14.         Application.Visible = True
  15.         Sheets("数据").Cells(myrow, 1).Resize(1, 6).Copy Sheets("查询").Cells(13, 3)
  16.     Else
  17.         i = i + 1
  18.         GoTo star:
  19.     End If
  20. End Sub


  21. Public Sub KILLME()
  22.     Application.DisplayAlerts = False
  23.     ActiveWorkbook.ChangeFileAccess xlReadOnly
  24.     Kill ActiveWorkbook.FullName
  25.     ThisWorkbook.Close False
  26. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
武林长风 + 3 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-12-28 13:42 | 显示全部楼层
本帖最后由 武林长风 于 2013-12-28 14:08 编辑
冥王 发表于 2013-12-28 13:28
刚才测试的时候不小心把测试的代码文件删了
试一下这个行不行

可否再加个:1、不启用宏就看不到这个查询工作表或工作簿关闭;2、输入错误出现提示:卡号错误,请重新输入,还有几次机会(最多3次),3次全错就自动删除,麻烦您了!

回复

使用道具 举报

发表于 2013-12-28 14:17 | 显示全部楼层
本帖最后由 冥王 于 2013-12-28 14:20 编辑
武林长风 发表于 2013-12-28 13:42
可否再加个:1、不启用宏就看不到这个查询工作表或工作簿关闭;2、输入错误出现提示:卡号错误,请重新输 ...
那就这样,工作簿关闭前把除sheet3这张空表外的所有工作表超级隐藏,打开工作簿时不启用宏就只能看到这张空表,启用宏则弹出输入窗口,要求输入密码
  1. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  2. On Error Resume Next
  3. Application.DisplayAlerts = False
  4.   For Each st In ThisWorkbook.Sheets
  5.     If st.Name <> "Sheet3" Then
  6.        st.Visible = xlSheetVeryHidden
  7.     End If
  8.   Next
  9. ThisWorkbook.Save
  10. Application.DisplayAlerts = True
  11. End Sub

  12. Private Sub Workbook_Open()
  13. On Error Resume Next
  14.     Static i As Byte
  15.     Dim myrow As Integer
  16.     Application.Visible = False
  17. star:
  18.     If i > 3 Then
  19.         KILLME
  20.     End If
  21.     XX = Application.InputBox("输入密码", "提示", Type:=1)
  22.     myrow = WorksheetFunction.Match(XX, Sheets("数据").Range("a:a"), 0)
  23.     If myrow > 0 Then
  24.         ThisWorkbook.Sheets("查询").Visible = True
  25.         Application.Visible = True
  26.         Sheets("数据").Cells(myrow, 1).Resize(1, 6).Copy Sheets("查询").Cells(13, 3)
  27.     Else
  28.         i = i + 1
  29.         MsgBox "卡号错误,请重新输入,还有" & 3 - i & "次机会"
  30.         GoTo star:
  31.     End If
  32.     Sheets(1).Select
  33. End Sub


  34. Public Sub KILLME()
  35.     Application.DisplayAlerts = False
  36.     ActiveWorkbook.ChangeFileAccess xlReadOnly
  37.     Kill ActiveWorkbook.FullName
  38.     ThisWorkbook.Close False
  39. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-12-28 14:24 | 显示全部楼层
冥王 发表于 2013-12-28 14:17
那就这样,工作簿关闭前把除sheet3这张空表外的所有工作表超级隐藏,打开工作簿时不启用宏就只能看到这张空 ...

怎么输错1次就关闭,再输得重新打卡,可否连续3次输入?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-17 05:29 , Processed in 0.350990 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表