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