«Метод« Ряды »объекта« _Global »не выполнен» Ошибка при входе в систему при запуске - PullRequest
0 голосов
/ 13 июня 2018

Мне нужно немного помочь с программой Excel, которую я создаю.Я пытаюсь создать пользовательскую форму для входа в систему, чтобы при открытии рассматриваемого Excel первая пользовательская форма для входа появлялась прежде, чем иметь доступ к книге.Теперь, когда я тестирую, запускаю приведенный ниже код в VBA, он работает без проблем.Однако, когда я пытаюсь открыть Excel и войти в систему (как это должно работать), это дает мне ошибку, которая в названии.Это код:

`

    Sub LoginRun()
    Dim AddData As Range, Current As Range
    Dim user As Variant, Code As Variant
    Dim PName As Variant, AName As Variant
    Dim ws As Worksheet, ws2 As Worksheet, ws3 As Worksheet
    Dim result As Integer
    Dim TitleStr As String
    Dim msg As VbMsgBoxResult

    'Variables
    user = OpeningWindow.UsernameTextbox.Value
    Code = OpeningWindow.PasswordTextbox.Value
    TitleStr = "Password check"
    result = 0
    Set Current = Sheet3.Range("B13")

    On Error GoTo errHandler:
    Set AddData = Sheet3.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
    If user <> "" And Not IsNumeric(user) And Code <> "" And IsNumeric(Code) Then
        For Each AName In Sheet3.Range("AM13:AM47")
            If AName = CLng(Code) And AName.Offset(0, -1) = user Then ' Use this for passcode numbers only
                MsgBox "Welcome Back: – " & user & " " & Code
                AddData.Value = user
                AddData.Offset(0, 1).Value = Now
                Current.Value = user
                result = 1
                MainMenuAdmin.Show
                Unload OpeningWindow
                Exit Sub
            End If
        Next AName
    End If

    If user <> "" And Not IsNumeric(user) And Code <> "" And IsNumeric(Code) Then
        For Each PName In Sheet3.Range("E13:E47")
            If PName = Code And PName.Offset(0, -1) = user Then ' Use this for passcode numbers only
                MsgBox "Welcome Back: – " & user & " " & Code
                AddData.Value = user
                AddData.Offset(0, 1).Value = Now
                Current.Value = user
                result = 1
                MainMenuUser.Show
                Unload OpeningWindow
                Exit Sub
            End If
        Next PName
    End If

    If result = 0 Then
        Trial = Trial + 1
        If Trial < 3 Then msg = MsgBox("Wrong password, please try again", vbExclamation + vbOKOnly, TitleStr)
        OpeningWindow.UsernameTextbox.SetFocus
        If Trial = 3 Then
            msg = MsgBox("Wrong password, the form will close…", vbCritical + vbOKOnly, TitleStr)
            ActiveWorkbook.Close False
        End If
    End If
    Exit Sub

errHandler:
 MsgBox "An Error has Occurred " & vbCrLf & "The error number is: " _
 & Err.Number & vbCrLf & Err.Description & vbCrLf & _
 "Please notify the administrator"
 End Sub

`

, и этот код, который я использую, показывает форму пользователя перед доступом к книге:

`

Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    ActiveWindow.Visible = False
    OpeningWindow.Show
    Windows(ThisWorkbook.Name).Visible = True
    Application.ScreenUpdating = True
End Sub

`

Как это работает в основном, код читает список на листе 3 для соответствующего имени пользователя и пароля, который вводится, а затем позволяет мне получить доступ крабочая книга, если введенный пароль совпадает с базой данных соответствующего имени пользователя.Моя теория заключается в том, что рабочий лист (хотя рабочая книга технически открыта) все еще скрыт, код не может найти строку / столбцы, где находится список имен пользователей, но я могу ошибаться (поэтому я и спрашиваю здесь).Есть ли способ это исправить?Заранее спасибо!

1 Ответ

0 голосов
/ 13 июня 2018

Напишите Sheet3.Rows.Count вместо Rows.Count.

Поскольку это единственное место, которое вы используете Rows, оно должно быть тем, которое делает ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...