Board logo

標題: [發問] 驗證三次錯誤後關閉EXCEL [打印本頁]

作者: cowww    時間: 2023-3-29 16:03     標題: 驗證三次錯誤後關閉EXCEL

各位大大 最近在幫單位改善報表
以下是我寫的輸入密碼的內容,但長官需要驗證三次錯誤後關閉EXCEL,可否幫我修正一下  感謝各位高人
Sub 按鈕1_Click()

Dim strAdminPWord As String

    Do
   
        strAdminPWord = InputBox("注意,此按鈕會讓白板資訊初始化!", "請輸入密碼")
        
        If strAdminPWord = "6556" Then
            MsgBox "密碼正確! ", vbOKOnly, "恭喜!"
            Exit Do

        ElseIf StrPtr(strAdminPWord) <> 0 Then
        MsgBox "密碼錯誤!", , "殘念∼"
        Exit Sub '離開程式
        
        End If
        MsgBox "不要氣餒,請繼續加油!"
    Loop Until StrPtr(strAdminPWord) <> 0
   
    MsgBox "繼續執行"
End Sub
作者: Andy2483    時間: 2023-3-29 16:46

回復 1# cowww


    謝謝前輩發表此主題與情境
以下是後學學習方案,請前輩參考

Option Explicit
Dim N&
Sub TEST_20230329_1()
Application.DisplayAlerts = False
Dim strAdminPWord As String
Do
   strAdminPWord = InputBox("注意,此按鈕會讓白板資訊初始化!", "請輸入密碼")
   If strAdminPWord = "6556" Then
      MsgBox "密碼正確! ", vbOKOnly, "恭喜!"
      Exit Do
      ElseIf StrPtr(strAdminPWord) <> 0 Then
         MsgBox "密碼錯誤!", , "殘念∼"
   End If
If N = 2 Then ActiveWindow.Close Else N = N + 1: MsgBox "不要氣餒,請繼續加油!"
Loop Until strAdminPWord = "6556"
MsgBox "繼續執行": N = 0
End Sub
作者: cowww    時間: 2023-3-29 17:22

Option Explicit
Dim N&
Sub TEST_20230329_1()
Application.DisplayAlerts = False
Dim strAdminPWord As String
Do
   strAdminPWord = InputBox("注意,此按鈕會讓白板資訊初始化!", "請輸入密碼")
   If strAdminPWord = "6556" Then
      MsgBox "密碼正確! ", vbOKOnly, "恭喜!"
      Exit Do
      ElseIf StrPtr(strAdminPWord) <> 0 Then
         MsgBox "密碼錯誤!", , "殘念∼"
   End If
If N = 2 Then ActiveWindow.Close Else N = N + 1: MsgBox "不要氣餒,請繼續加油!"
Loop Until strAdminPWord = "6556"
MsgBox "繼續執行": N = 0
End Sub

這個寫法我無法執行

我有兩個問題
1.Sub TEST_20230329_1()為何之前會有
Option Explicit
Dim N&

2.End If
        MsgBox "不要氣餒,請繼續加油!"
    Loop Until StrPtr(i) <> 0
這一段語法是要在按"取消"或"X"的情況下給予回覆

If N = 2 Then ActiveWindow.Close Else N = N + 1: MsgBox "不要氣餒,請繼續加油!"
Loop Until strAdminPWord = "6556"
MsgBox "繼續執行": N = 0
改成這樣會不會導致按"取消"或"X"的情況下執行後續的工作
(因為這段程式碼後面其實還有一段密碼無異常就執行更新的動作)
作者: Andy2483    時間: 2023-3-30 08:22

回復 3# cowww


    謝謝前輩回復
後學學習情境解決方案如下,請前輩參考

Option Explicit
'↑強制明確宣告檔案中的所有變數,或允許隱含宣告變數
Dim N%
'↑宣告模組共用變數:N是短整數(次數累計)
Sub 按鈕1_Click()
Application.DisplayAlerts = False
'↑令程序不要問是否存檔!不存關閉檔案!
Dim strAdminPWord As String
'↑宣告變數:strAdminPWord是字串變數
Do
'↑設無限迴圈!要自己想辦法跳出迴圈
   strAdminPWord = InputBox("注意,此按鈕會讓白板資訊初始化!", _
   "請輸入密碼")
   '↑令strAdminPWord這字串變數是 使用者輸入的對話方塊,~~~~
   If strAdminPWord = "6556" Then
   '↑如果strAdminPWord變數是 "6556" ??
      MsgBox "密碼正確! ", vbOKOnly, "恭喜!"
      '↑令跳出提示窗:~~~~
      Exit Do
      '↑令程序跳出無限迴圈
      ElseIf StrPtr(strAdminPWord) <> 0 Then
      '↑令如果StrPtr()回傳值不是0 ??
         MsgBox "密碼錯誤! " & N + 1, , "殘念∼"
         '↑令跳出提示窗:~~~~
         If N = 2 Then ActiveWindow.Close Else: N = N + 1
         '↑如果N這短整數是 2!:就令程序關閉此檔案視窗,
         '否則令N變數累加 1

      Else
         MsgBox "不要氣餒,請繼續加油!"
         '↑否則就令跳出提示窗:~~~~
         Exit Sub
   End If
Loop
N = 0
MsgBox "繼續執行"

'執行後方 密碼無異常就執行更新的動作
End Sub
作者: cowww    時間: 2023-3-30 11:03

回復 4# Andy2483


成功了
非常感謝Andy2483大大的幫忙




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)