VB分支嵌套问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 15:17:26
Dim i As Integer
'定义i为模块级变量,用于计数
Private Sub Command1_Click()
Dim Password As String
Dim pwd As String
Dim i As Integer
Password = "123456"
pwd = Trim(Text1.Text)
If Password <> pwd Then
MsgBox "密码输入不正确!", , "提示"
i = i + 1
'输入错误次数加1
If i = 3 Then
MsgBox "三次密码输入错误,强行退出!", vbCritical, "提示"
End
End If
Else
MsgBox "输入正确!", , "提示"
End If
End Sub

我想知道为什么三次密码输入上限不起作用,谢谢

你自己都说了要定义i为模块级变量,干嘛还在过程内部定义i呢...把过程里面的去掉就OK了,还有啊,建议你养成个好习惯,i啊,j啊这些个简单变量只用于过程内部的循环,模块级的声明要详细些,比如你这个最好是写成
Dim miErrCount As Integer
m-代表模块级变量
i-代表integer类型
ErrCount-错误次数

这样一看到这个变量,你就知道范围,类型,作用了,省的以后回来看都不知道什么是什么,这是我自己的习惯,呵呵,你也可以自己摸索

回归到你的问题,只要把下面这句去掉就行了
Private Sub Command1_Click()
Dim Password As String
Dim pwd As String
Dim i As Integer <-去掉这句

Dim i As Integer '定义全局变显

Private Sub Command1_Click()
Dim Password As String
Dim pwd As String

Password = "123456"
pwd = Trim(Text1.Text)
If Password <> pwd Then
MsgBox "密码输入不正确!", , "提示"
i = i + 1
'输入错误次数加1
If i >= 3 Then
MsgBox "三次密码输入错误,强行退出!", vbCritical, "提示"
End
End If
Else
MsgBox "输入正确!", , "提示"
End If
End Sub

当局部变量和模块变量同名时,在过程中模块变量不起作用.
所以:
Private Su