Я создаю систему, использующую VBA, чтобы учащиеся выбирали свои классы в старшей школе.Пользователей приветствует пользовательская форма входа в систему «LoginForm» для входа в систему.Однако, поскольку их конфиденциальная информация хранится на листах «Информация об ученике», где хранится их информация и «Выбор AM» для выбора класса, я не хочу, чтобы студенты могли это увидеть.
Итак, код, который я написал, считывает их идентификатор пользователя и пароль из листа "studentinformation" и открывает форму пользователя "AMForm", если она верна.Я только хочу, чтобы логин администратора имел доступ к этим листам, и поэтому я хочу, чтобы все листы были скрыты от учащихся.Я установил значения в столбце G как «студент» для студентов или «админ» для администратора.Идея состоит в том, что если значение ячейки в столбце G равно «студент», две таблицы будут скрыты, но если это «admin», то листы будут видны и т. Д.
Я ввел ниже свой текущий код входа в систему.Спасибо за вашу помощь:)
Option Explicit
Private Sub btnLogin_Click()
Dim RowNo As Long
Dim ID As String, PW As String
Dim WS As Worksheet
Dim aCell As Range
On Error GoTo ErrorHandler
If Len(Trim(txtUser)) = 0 Then
txtUser.SetFocus
MsgBox "Error. UserID cannot be empty."
Exit Sub
End If
If Len(Trim(txtPass)) = 0 Then
txtPass.SetFocus
MsgBox "Error. Password cannot be empty."
Exit Sub
End If
Application.ScreenUpdating = False
Set WS = Worksheets("StudentInformation")
ID = LCase(Me.txtUser)
Set aCell = WS.Columns(1).Find(What:=ID, LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False)
If Not aCell Is Nothing Then
RowNo = aCell.Row
If Me.txtPass = aCell.Offset(, 1) Then
MsgBox "Login Successful."
Unload Me
Else
MsgBox "Incorrect UserID or Password. Please try again.", vbOKOnly
End If
Else
MsgBox "Incorrect UserID or Password. Please try again.", vbOKOnly
End If
'Opening specific Userform
If aCell.Offset(, 4) = "SBUB10" Then AMForm.Show
If aCell.Offset(, 4) = "SBUB20" Then FMForm.Show
If aCell.Offset(, 4) = "SBUB30" Then HRMForm.Show
CleanExit:
Set WS = Nothing
Application.ScreenUpdating = True
Exit Sub
ErrorHandler:
MsgBox Err.Description
Resume CleanExit
End Sub