簡體   English   中英

在文本字段中輸入密碼后,密碼的VBA無法繼續

[英]VBA for password does not continue after password was entered in text field

在我的電子表格中,我有一個鏈接到以下VBA的按鈕:

Sub Button_01()
If UserForm1.checkPassword() = True Then
Sheet1.Range("C3").Value = 1
Else
End If
End Sub

使用此按鈕,我觸發具有以下VBA的用戶表單:

Private passwordStatus As Boolean

Private Sub CommandButton1_Click()
    Dim a As String
    Dim Password As String
    a = "123"
    Password = TextBox1.Text
    passwordStatus = False
    If Password = a Then
        MsgBox "Password Correct.", vbInformation
        passwordStatus = True
        Unload Me
    Else
        MsgBox "Password Incorrect. Please try again.", vbCritical
    End If
End Sub

Function checkPassword() As Boolean
  UserForm1.Show
  checkPassword = passwordStatus
End Function

UserForm1打開,但是當我在UserForm1輸入密碼時,該過程不會繼續。 The UserForm1只是呆在那里。

輸入密碼后,我在代碼中找不到阻止宏繼續執行的錯誤。 你能幫助我嗎?

對我來說,您的代碼可以完美地工作,除了:

Sub Button_01()
If UserForm1.checkPassword() = True Then
Sheet1.Range("C3").Value = 1
Else
End If
End Sub

這段代碼將出錯。

更改:

Sheet1.Range("C3").Value = 1

至:

Sheets(1).Range("C3").Value = 1
  • 單擊分配了Button_01的工作表上的按鈕將打開userform1。
  • 在打開的用戶窗體上,我可以單擊OptionButton1,它將運行它的click_event
  • 如果我在textbox1中輸入“ 123”,它將隱藏用戶窗體,錯誤的密碼會觸發msgbox重試。

通常通過公共變量在用戶窗體和常規模塊之間傳遞信息。 您應該將大部分代碼放入常規模塊中,並且僅使用用戶表單將檢查返回。

常規模塊:

Public CorrectPassword As Boolean

Sub Button_01()
    CorrectPassword  = False
    UserForm1.Show
    If CorrectPassword = True Then
        Sheets(1).Range("C3").Value = 1
    Else
        Msgbox "Password Incorrect. Please try again.", vbCritical
    End If
End Sub

用戶表單模塊:

Private Sub CommandButton1_Click()
    Dim a As String
    Dim Password As String
    a = "123"
    Password = TextBox1.Text
    If Password = a Then CorrectPassword = True
    Unload Me
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM