错误三次则结束程序的问题
我想做的这个案例要求:利用代码打开"生产表.xlsx",如果输入密码错误时继续弹出输入框,连续错误三次则关闭程序。
正确密码是789.
我在EXCEL VBA里正常运行,可是VB里不行。
代码如下:
Option Explicit
Dim XlApp As New Excel.Application '使用 Excel 对象删除指定行
Dim XlBook As New Excel.Workbook
Dim XlSheet As New Excel.Worksheet
Private Sub Command1_Click()
On Error Resume Next
Dim i As Byte, PsdStr As String
Do
Err.Clear
i = i + 1
PsdStr = XlApp.InputBox("请输入密码:" & Chr(10) & "您还有" _
& 4 - i & "次机会", "第" & i & "次输入密码", , , , , , 3)
XlApp.Workbooks.Open XlApp.ThisWorkbook.Path & "\生产表.xlsx", , , , PsdStr
If i = 3 Then
MsgBox "对不起,你已错误三次,程序即将关闭"
Exit Sub
Else
If Err.Number = 0 Then Exit Sub
End If
Loop
XlApp.StatusBar = "打开工作簿成功..."
End Sub
Private Sub Form_Load()
Set XlApp = CreateObject("Excel.Application") '创建EXCEL对象
XlApp.Visible = True
XlApp.Caption = "应用程序调用 Microsoft Excel"
Set XlBook = XlApp.Workbooks.Open(App.Path & "\7-29 防错处理二.xlsm")
Set XlSheet = XlBook.Worksheets(1)
End Sub
我尝试着改了一下代码,上面是我改过的,还是不行,打不开那个生产表。
请问高手,哪里有问题呀?谢谢!
付VBA代码:
Sub 打开工作簿()
On Error Resume Next '错误时执行下一步
Dim i As Byte, PsdStr As String
Do '启动循环
Err.Clear '清除错误,相当于将Err.Number属性值归零,其作用是避免上一次的错误干扰当前操作的判断结果
i = i + 1 '累加变量,记录输入密码的次数
'弹出输入框让用户输入打开工作簿的密码,同时显示允许输入几次
PsdStr = Application.InputBox("请输入密码:" & Chr(10) & "您还有" & 4 - i & "次机会", "第" & i & "次输入密码", , , , , , 3)
'利用前面输入的密码去打开代码所在工作簿同路径下的“生产表.xlsx”
Workbooks.Open ThisWorkbook.Path & "\生产表.xlsx", , , , PsdStr
If i = 3 Then '如果已经错误三次
MsgBox "对不起,你已错误三次,程序即将关闭" '则提示用户
Exit Sub '然后关闭程序
Else '否则
'如果程序没有错误就结束循环(密码正确的情况下才会无错误),如果有错误则会返回Do语句之后,重新输入密码
If Err.Number = 0 Then Exit Do
End If
Loop
Application.StatusBar = "打开工作簿成功..." '在状态栏显示打开成功
End Sub