标签: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分钟的方便方法。