Excel精英培训网

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

[已解决]关于vba密码验证问题

[复制链接]
发表于 2013-12-15 09:27 | 显示全部楼层 |阅读模式
关于vba密码验证问题
  1. Sub a()


  2. Call b '用什么方法来实现,在执行这句命令时,弹出的密码框,我们在输入错误的密码后,或者是取消、关闭,就将不执行本宏中,以下的命令





  3. Dim pw
  4. pw = InputBox("请输入管理员密码")
  5. If pw = "" Then
  6. Exit Sub
  7. ElseIf pw = "admin" Then
  8. Else
  9. MsgBox "权限验证错误,程序自动退出!", , "系统提示"
  10. Exit Sub
  11. ThisWorkbook.Unprotect (pw)
  12. End If

  13. MsgBox "测试a", , "系统提示"

  14. End Sub

  15. Sub b()


  16. Dim pw
  17. pw = InputBox("请输入管理员密码")
  18. If pw = "" Then
  19. Exit Sub
  20. ElseIf pw = "admin" Then
  21. Else
  22. MsgBox "权限验证错误,程序自动退出!", , "系统提示"
  23. Exit Sub
  24. ThisWorkbook.Unprotect (pw)
  25. End If

  26. MsgBox "测试b", , "系统提示"


  27. End Sub
复制代码
请大家,把我代码中注释的部分用代码来实现,谢谢大家了!
关于vba密码验证问题.rar (6.71 KB, 下载次数: 12)
发表于 2013-12-15 09:33 | 显示全部楼层
一、把B改成函数,返回逻辑值。
二、在B中把exit sub换成END


回复

使用道具 举报

发表于 2013-12-15 09:46 | 显示全部楼层
补充一个

在 Call b   上面添加一个输入密码的判断,
回复

使用道具 举报

 楼主| 发表于 2013-12-15 09:56 | 显示全部楼层
无聊的疯子 发表于 2013-12-15 09:46
补充一个

在 Call b   上面添加一个输入密码的判断,

老师可以帮我做下附件吗,谢谢了!
回复

使用道具 举报

 楼主| 发表于 2013-12-15 10:17 | 显示全部楼层
hwc2ycy 发表于 2013-12-15 09:33
一、把B改成函数,返回逻辑值。
二、在B中把exit sub换成END

老师帮我做个附件好吧
回复

使用道具 举报

发表于 2013-12-15 11:05 | 显示全部楼层
yjwdjfqb 发表于 2013-12-15 10:17
老师帮我做个附件好吧
  1. Sub a()


  2.     Call b    '用什么方法来实现,在执行这句命令时,弹出的密码框,我们在输入错误的密码后,或者是取消、关闭,就将不执行本宏中,以下的命令
  3.     Dim pw
  4.     pw = InputBox("请输入管理员密码")
  5.     If pw = "" Then
  6.         Exit Sub
  7.     ElseIf pw = "admin" Then
  8.     Else
  9.         MsgBox "权限验证错误,程序自动退出!", , "系统提示"
  10.         Exit Sub
  11.         ThisWorkbook.Unprotect (pw)
  12.     End If

  13.     MsgBox "测试a", , "系统提示"

  14. End Sub

  15. Sub b()

  16.     Dim pw
  17.     pw = InputBox("请输入管理员密码")
  18.     If pw = "" Then
  19.         End

  20.     ElseIf pw = "admin" Then
  21.     Else
  22.         MsgBox "权限验证错误,程序自动退出!", , "系统提示"
  23.         End
  24.         ThisWorkbook.Unprotect (pw)
  25.     End If

  26.     MsgBox "测试b", , "系统提示"

  27. End Sub
复制代码

评分

参与人数 1 +5 收起 理由
yjwdjfqb + 5 很给力!谢谢老师,是要这样的。

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-12-15 11:17 | 显示全部楼层
hwc2ycy 发表于 2013-12-15 11:05

谢谢老师,就是要这样的效果。

但,没有在密码输入框中输入字符时,点确定,也会退出程序,
在这里能不能实现,当没有在密码输入框中输入字符时,点了,确定就弹出,“没有输入密码”,确定后,又可以继续输入密码。
回复

使用道具 举报

发表于 2013-12-15 13:02 | 显示全部楼层
本帖最后由 yyyydddd8888 于 2013-12-15 13:10 编辑
yjwdjfqb 发表于 2013-12-15 11:17
谢谢老师,就是要这样的效果。

但,没有在密码输入框中输入字符时,点确定,也会退出程序,

看看这样行不行:
关于vba密码验证问题.zip (8.52 KB, 下载次数: 8)
回复

使用道具 举报

发表于 2013-12-15 13:51 | 显示全部楼层
yjwdjfqb 发表于 2013-12-15 11:17
谢谢老师,就是要这样的效果。

但,没有在密码输入框中输入字符时,点确定,也会退出程序,
  1. Sub b()

  2.     Dim pw
  3.     Do
  4.         pw = InputBox("请输入管理员密码")

  5.         If Len(pw) = 0 Then MsgBox "没有输入密码"

  6.     Loop While Len(pw) = 0

  7.     If pw = "admin" Then
  8.     Else
  9.         MsgBox "权限验证错误,程序自动退出!", , "系统提示"
  10.         End
  11.         ThisWorkbook.Unprotect (pw)
  12.     End If

  13.     MsgBox "测试b", , "系统提示"

  14. End Sub
复制代码
回复

使用道具 举报

发表于 2013-12-15 13:52 | 显示全部楼层
如果用户单击 OK 或按下ENTER ,则 InputBox 函数返回文本框中的内容。
如果用户单击 Cancel,则此函数返回一个长度为零的字符串 ("")。

所以,当用户直接点取消,与没有输入内容点确定,效果会是一样的。

但是换成application的input方法,则可以实现
如果选择了“确定”按钮,则 InputBox 将返回对话框中输入的值。如果单击“取消”按钮,则 InputBox 返回 False。


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 12:13 , Processed in 0.716327 second(s), 18 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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