Excel VBA 5.30 限制输入次数的用户窗体 给你犯错的机会
限制输入次数的用户窗体 给你犯错的机会
欢迎关注我的公众号“Excel和VBA”,原创技术文章第一时间推送。
在上一节呢,我们也是学习了 多用户的窗体
不过有小伙伴说,在实际的操作测试中,发现有一个地方不太完美
那就是没有输入的次数要求,一旦输入错误就会被强行退出
这让他在测试的时候,非常的不舒服,强制退出导致之前写的一些代码都没有保存
那么问题来了,如何给与输错的机会呢?
就是给一个犯错的次数呢?
前景提要
今天我们还是用之前的窗体来继续操作,既然要限制输入的次数,那么我们声明一个变量来登记输入的次数不就可以了吗?
那么是不是真的那么简单呢?
是的,但是你写起来可能又不能实现!
因为有小伙伴已经尝试过了,每次都是不成功,
那么,轮到我这个主角了。
代码区
其实,今天的关键也就是这个次数的写法
Private Sub CommandButton1_Click()
Static nums
Me.Hide
Dim k&, sth As Worksheet, rng As Range, sth1 As Worksheet
Set sth = ThisWorkbook.Worksheets("用户名")
s = ComboBox1.Value
With sth.UsedRange
Set rng = .Find(what:=s, searchformat:=True)
If Not rng Is Nothing Then
ss = rng.Offset(0, 1).Text
GoTo line2
Else
GoTo line
End If
End With
line2:
If ComboBox1.Value = s And TextBox2.Value = ss Then
MsgBox "欢迎你登陆!"
sth.Visible = xlSheetVeryHidden
Application.Visible = True
If s <> "admin" Then
For Each sth1 In Worksheets
If sth1.Name <> s Then
sth1.Visible = xlSheetVeryHidden
End If
Next sth1
Else
For Each sth1 In Worksheets
sth1.Visible = xlSheetVisible
Next sth1
End If
Else
line:
If nums < 3 Then
nums = nums + 1
MsgBox "您的输入不合法请重新输入!您还有" & 3 - nums & "次"
Me.Show
Else
Application.Visible = True
sth.Visible = xlSheetVeryHidden
Application.Quit
End If
End If
End Sub
看看效果先
成功输入3次之后,最后一次就强制要求关闭工作簿了。
这里呢,为了体现效果,所以我关闭的时候,并没有强制关闭。
代码解析
那么,既然已经实现了功能,那肯定要来讲讲代码了
大家一定很想知道,这个次数是如何得到的吧
因为很多的小伙伴都有尝试,但是结果都是每次都是重新归零,或者陷入一个死循环里面
这里我们需要接触一个新的变量方法
那就是全局变量
Static nums
就是他
他就是全局变量,代表了整个程序运行过程中,我们执行操作的次数
当第一次操作失误之后,这个时候的nums是1 ,那么他如何传递呢?
他不可能作为一个普通的变量来传递,因为你一旦点击了确定按钮,整个程序里面的变量都会被归零
所以在这个情况下,我们需要使用到全局变量
全局变量,就是只要这个程序没有结束,那么这个变量就会一直存在,而且是不断变化的
我们来测试下,接上上面的测试,我们已经失败了一次,那么我们再次尝试
因为有了全局变量的存在,所以nums的值,被成功的传递并且保存下来了。
这就是今天的核心知识点,全局变量
知道了这个,那后面的内容就很简单了
之前测试失败的小伙伴们,快快开工吧。