设置变化的密码

2024-05-03 13:48:39 浏览数 (1)

标签:Excel技巧,VBA

本文介绍在Excel中更改密码的技巧,来自www.wimgielis.com。每次用户要求的密码都是(或可以是)不同的(只有用户知道需要什么类型的密码)。注意,这里讨论的密码是Excel文件中你自己的自定义密码,而不是可以用来阻止(写入)对文件的访问的密码。

诀窍是使用当前时间作为密码:如果现在是晚上19:42,那么密码将是1942。许多人在电脑屏幕的右下角都有一个时钟,此时只需将看一下这个时钟就知道所需的密码。

VBA代码如下:

代码语言:javascript复制
'根据当前时间,以"随机"方式向用户询问密码
Sub ChangingPassword()
 Dim dtNow As Date
 Dim sPassword_Required As String
 Dim sPassword_Given As String
 dtNow = Now
 sPassword_Required = Format(dtNow, "hhmm")
 sPassword_Given = InputBox("请输入密码:")
 If sPassword_Given = sPassword_Required Then
   MsgBox "密码正确"
 Else
   MsgBox "不正确的密码"
 End If
End Sub

在代码中,使用函数Format和Now以文本形式返回当前时间(声明为String的变量),这是必需的密码。用户提供的密码也存储在一个变量中。最后,做一个非常简单的检查,看看两个密码是否匹配。你可以修改代码,让密码包括当前日期或月份,甚至可以包括秒数(并根据需要调整密码匹配测试)。

如果使用分钟级别,则过程总是有可能在一分钟停止之前启动,当用户开始键入密码时,新的一分钟就开始了。为了考虑到这种可能性,可能需要留出5秒钟的时间:

代码语言:javascript复制
'根据当前时间,以"随机"方式向用户询问密码,并留出5秒钟的时间
Sub ChangingPassword_AllowTimeInterval()
 Dim dtNow As Date
 Dim sPassword_Required As String
 Dim sPassword_Given As String
 dtNow = Now
 sPassword_Required = Format(dtNow, "hhmm")
 sPassword_Given = InputBox("请输入密码:")
 If (sPassword_Given = sPassword_Required) Or _
   ((sPassword_Given = Format(DateAdd("n", 1, dtNow), "hhmm")) And (Second(Now) <= 5)) Then
   MsgBox "密码正确"
 Else
   MsgBox "不正确的密码"
 End If
End Sub

比较两段代码,唯一的变化是在扩展IF语句中:现在只要分钟数正确就足够了,或者,如果在下一分钟的前5秒内,可以偏移1分钟。DateAdd是一种将现有日期/时间变量加1分钟的方便方法。

0 人点赞