Формуляр за вход в Excel VBA
Възможно е да създадете потребителска форма, базирана на вход, в Excel VBA с всички падащи списъци с идентификатор за вход и паролата ще бъде споделена отделно. По някое време трябва да имате представа за създаване на потребителска форма за вход, базирана на парола, която изисква потребителят да избере своя потребителски идентификатор и да въведе паролата за достъп до необходимия работен лист.
В тази статия ще ви покажем как да създадете потребителска форма за вход с помощта на Excel VBA.

Как да създам потребителски формуляр за вход?
Например, да предположим, че в различните работни листове имате регионални номера на продажбите. Имаме 4 различни имена на зони и всеки работен лист за зони има само свързани данни. Сега идеята е да се създаде формуляр за вход, където ръководителят на продажбите на зона „Изток“ трябва да вижда само данни за зоната „Изток“, а не всякакви други зони, но като администратор трябва да видите всички работни листове на зоните.
Първо, трябва да вмъкнем име на лист, наречено „Администратор“. В този административен лист трябва да създадем идентификационни данни „Вход за идентификация“ и „Парола“.

Назовах зоната и паролата по същия начин, които можете да промените по-късно. За имена на зони създадох диапазона от имена като „ZoneList“. Този „Мениджър на имена“ ще бъде използван по-късно в тази потребителска форма за вход.

Когато потребителят отвори файла, той трябва да види един фиктиран лист във фонов режим, така че създайте нов лист и го наименувайте като „фиктивен лист“. “

Използвайки тези работни листове, ние ще създадем потребителска форма за вход.
Стъпка 1: Поставете потребителски формуляр
Натиснете alt = "" + клавиш F11, за да отворите прозореца на VBA Editor.

- От раздела „Вмъкване“ поставете „Потребителски формуляр“.

- Това ще създаде нов потребителски формуляр като този по-долу.

- Натиснете клавиша F4, за да видите прозореца Свойства. От този прозорец на свойствата променете името на потребителския формуляр на „LoginUF“

- По същия начин, използвайки този прозорец за свойства, можем да играем със свойствата на потребителската форма. Направих някои от промените в собствеността. Можете да се обърнете към прозореца за свойства по-долу, за да приложите промени към свойствата на потребителската форма.

- Сега моята потребителска форма изглежда така.

Стъпка 2: Проектиране на потребителска форма
- От кутията с инструменти на потребителската форма поставете две полета за етикети и въведете текста, както е показано по-долу.

- От кутията с инструменти поставете „Combo Box“.

- За това комбо поле Excel трябва да получим имената на зоните от работния лист „Администраторски лист“, така че от прозореца със свойства на „Комбинираното поле“ първо дайте име на това комбинирано поле като „Zone_List_ComboBox“ под свойството „Име“ .

- От свойството „Източник на редове“ на комбинираното поле въведете името, дадено на списъка с зони в „Администраторски лист“.

- Сега нашето комбинирано поле трябва да показва имената на зоните в падащия списък в Excel.

- За „Въведете парола“ трябва да вмъкнем „Текстово поле“ от кутията с инструменти.

- За това „Текстово поле“ трябва да променим свойството „Name“ и да го променим като „Password_TB“.

Сега в кодирането на формуляра за вход в VBA, „Combo Box“ ще бъде обозначен с името „Zone_List_ComboBox“, а „Text Box“ ще бъде означен с името „Password_TB“.
- Поставете два „Командни бутона“ и въведете текста като „Вход“ и „Изход“.

For the “Log In” command button, change the name property to “Login_CommandButton,” and for the “Log Out” command button, change the name property to “LogOut_CommandButton.”
Step 3: Code
We are done with the VBA login user form design part. It’s time to write the code to create a login based user form in excel VBA.
- Double click on the “Log In” Command Button. This will open a blank sub procedure like the below one.

Inside this procedure, we need to write the code about what should happen if the “Log In” button is pressed.
I have already written the code. You can copy and paste the code from below inside the above procedure.
Code:
Private Sub Login_CommandButton_Click() If Zone_List_ComboBox.Value = "" Then MsgBox "Zone Cannot be Blank!!!", vbInformation, "Zone Name" Exit Sub End If If Password_TB.Value = "" Then MsgBox "Password Cannot be Blank!!!", vbInformation, "Password" Exit Sub End If If Zone_List_ComboBox.Value = "Admin" And Password_TB.Value = "Admin" Then Unload Me Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Visible = xlSheetVisible Next Ws Sheets("Admin").Select Else Dim ZoneName As String Dim Password As Variant ZoneName = Zone_List_ComboBox.Value Password = Application.WorksheetFunction.VLookup(ZoneName, Sheets("Admin").Range("A:B"), 2, 0) If Password Password_TB.Value Then MsgBox "Password is not matching", vbInformation, "Wrong Password" Exit Sub End If If Password = Password_TB.Value Then Unload Me Sheets(ZoneName).Visible = True Sheets(ZoneName).Select ActiveSheet.Range("A1").Select End If End If End Sub
Similarly, double click on the “Log Out” command button and enter the below code.
Code:
Private Sub LogOut_CommandButton_Click() ThisWorkbook.Save ThisWorkbook.Close End Sub

Now double click on “User Form” (not on any of the buttons inserted) and add the below code.
Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) ' Prevents use of the Close button If CloseMode = vbFormControlMenu Then MsgBox "Clicking the Close button does not work." Cancel = True End If End Sub

- Now double click on the “ThisWorkbook” icon. This will open up below the blank code field.

Now add the below code in this blank field.
Code:
Private Sub Workbook_Open() Dim Ws As Worksheet Application.DisplayAlerts = False Application.ScreenUpdating = False For Each Ws In ActiveWorkbook.Worksheets If Ws.Name "Dummy" Then Ws.Visible = xlSheetVeryHidden End If Next Ws LogInUF.Show End Sub

- We are done with the coding part of the form. Save the workbook as a “Macro-Enabled” workbook and reopen the workbook. Upon reopening the workbook, we should see the below window.

- From this user form, we need to choose the respective zone name and enter the associated password. For example, I will choose the “East” zone from the drop-down and enter the password.

- If I click on “Log In,” we can see only the “East” zone worksheet.

Similarly, if we log in with “Admin,” we can access all the worksheets.

Like this, we can create a login based password protected worksheet access.
Things to Remember
- Трябва да използвате същите имена, които сме дали на потребителската форма, текстовото поле и командния бутон и комбинираното поле в кодирането.
- Можете да промените името и паролата на зоната според вашето желание.