Форма входа пользователя для Excel VBA - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь создать форму входа в систему, где введенные имя пользователя и пароль соответствуют данным на листе.Я попытался написать код, если имя пользователя или пароль неверны, он покажет msgbox и очистит ввод для повтора.Но когда я проверил эту функцию, ничего не произошло.Изображение здесь enter image description here

Код здесь

Private Sub login_Click()

    Dim x, a As Double

    a = WorksheetFunction.CountA(Range("A:A"))

    If untb.Value = "" Then
    MsgBox ("Enter the username"), vbOKOnly

    ElseIf passtb.Value = "" Then
    MsgBox ("Enter the password"), vbOKOnly

    ElseIf untb.Value <> "" And passtb.Value <> "" Then

    For x = 1 To a

    If untb.Value = Cells(x, 2) And passtb.Value = Cells(x, 3) Then
    Unload Me
    MsgBox ("Welcome to Great Wines :)"), vbOKOnly
    order.show

    End If

    Next x

    Else
    MsgBox ("Invalid username or password!"), vbOKOnly
    untb.Value = ""
    passtb.Value = ""
    untb.SetFocus

    End If


End Sub

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Это должно справиться с тем, что вы пытаетесь сделать. Вам нужно будет обновить блок With своим именем листа, иначе вы можете столкнуться с дальнейшими проблемами

Private Sub login_Click()
    Dim LoginUser As Range
    Dim FirstLoginUserAddress As String
    Dim SuccessfulLogin As Boolean

    If untb.Value <> "" And passtb.Value <> "" Then
        ' Update with the sheet reference where your login/passwords are kept. Otherwise, You will get issues
        With Sheet1.Range("B:B")
            Set LoginUser = .Find(untb.Value)
            SuccessfulLogin = False
            If Not LoginUser Is Nothing Then
                FirstLoginUserAddress = LoginUser.Address
                Do
                    If CStr(LoginUser.Offset(0, 1).Value2) = passtb.Value Then
                        SuccessfulLogin = True
                        Exit Do
                    Else
                        Set LoginUser = .FindNext(LoginUser)
                    End If
                Loop Until LoginUser Is Nothing Or LoginUser.Address = FirstLoginUserAddress
            End If
        End With

        If SuccessfulLogin = True Then
            Unload Me
            MsgBox ("Welcome to Great Wines :)"), vbOKOnly
            Order.Show
        Else
            MsgBox ("Invalid username or password!"), vbOKOnly
            untb.Value = ""
            passtb.Value = ""
            untb.SetFocus
        End If
    Else
        MsgBox "Enter the " & IIf(untb.Value = vbNullString, "username", "password"), vbOKOnly
    End If
End Sub
0 голосов
/ 04 января 2019

Вы можете попробовать что-то вроде этого ...

Private Sub login_Click()
Dim UserName As String, PW As String
Dim rngUser As Range
Dim firstUser As String
Dim UserFound As Boolean

If untb.Value = "" Then
    MsgBox ("Enter the username"), vbOKOnly
    untb.SetFocus
    Exit Sub
End If

If passtb.Value = "" Then
    MsgBox ("Enter the password"), vbOKOnly
    passtb.SetFocus
    Exit Sub
End If

UserName = untb.Value
PW = passtb.Value
With Range("B:B")
    Set rngUser = .Find(UserName, lookat:=xlWhole)
    If Not rngUser Is Nothing Then
        firstUser = rngUser.Address
        Do
            If PW = rngUser.Offset(0, 1).Value & "" Then
                UserFound = True
                Unload Me
                MsgBox ("Welcome to Great Wines :)"), vbOKOnly
                Order.Show
            Else
                Set rngUser = .FindNext(rngUser)
            End If
        Loop While Not rngUser Is Nothing And firstUser <> rngUser.Address
    Else
        MsgBox "UserName is Incorrect!", vbExclamation, "UserName Not Found!"
        untb.Value = ""
        passtb.Value = ""
        Exit Sub
    End If
End With

If Not UserFound Then
    MsgBox "Invalid password!", vbOKOnly
    untb.Value = ""
    passtb.Value = ""
    untb.SetFocus
End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...