Přihlašovací formulář Excel VBA
Je možné vytvořit uživatelský formulář založený na přihlášení v aplikaci Excel VBA se všemi rozevíracími seznamy přihlašovacích ID a heslo bude sdíleno samostatně. V určitém okamžiku musíte mít představu o vytvoření přihlašovacího formuláře založeného na hesle, který vyžaduje, aby si uživatel vybral své ID uživatele a zadal heslo pro přístup k požadovanému listu.
V tomto článku vám ukážeme, jak vytvořit přihlašovací formulář uživatele pomocí aplikace Excel VBA.

Jak vytvořit přihlašovací uživatelský formulář?
Předpokládejme například, že máte prodejní čísla podle regionů v různých listech. Máme 4 různé názvy zón a každý list zóny má pouze související data. Nyní je myšlenkou vytvořit přihlašovací formulář, kde by prodejní hlava zóny „Východ“ měla vidět pouze data zóny „Východ“, nikoli jiné zóny, ale jako správce byste měli vidět všechny listy zón.
Nejprve musíme vložit název listu s názvem „Správce“. V tomto listu správce musíme vytvořit pověření „Přihlásit se“ a „Heslo“.

Pojmenoval jsem zónu a heslo stejně, můžete to později změnit. Pro názvy zón jsem vytvořil rozsah názvů jako „ZoneList“. Tento „Správce jmen“ bude použit později pro tento přihlašovací uživatelský formulář.

Když uživatel otevře soubor, měl by vidět jeden fiktivní list na pozadí, proto vytvořte nový list a pojmenujte jej jako „Fiktivní“ list. “

Pomocí těchto pracovních listů vytvoříme přihlašovací uživatelský formulář.
Krok 1: Vložte uživatelský formulář
Stisknutím klávesy alt = "" + F11 otevřete okno editoru VBA.

- Na kartě „Vložit“ vložte „Uživatelský formulář“.

- Tím se vytvoří nový uživatelský formulář, jako je níže uvedený.

- Stisknutím klávesy F4 zobrazíte okno Vlastnosti. V tomto okně vlastností změňte název uživatelského formuláře na „LoginUF“

- Podobně pomocí tohoto okna vlastností můžeme hrát s vlastnostmi formuláře uživatele. Provedl jsem některé změny vlastností. Chcete-li použít změny vlastností uživatelského formuláře, můžete se podívat do níže uvedeného okna vlastností.

- Nyní můj uživatelský formulář vypadá takto.

Krok 2: Navrhněte Userform
- Z panelu nástrojů formuláře uživatele vložte dvě pole se štítky a zadejte text, jak je znázorněno níže.

- Z panelu nástrojů vložte „Combo Box“.

- Pro toto pole se seznamem Excel musíme získat názvy zón z listu „Admin Sheet“, takže v okně vlastností „Combo Box“ nejprve pojmenujte toto pole se seznamem jako „Zone_List_ComboBox“ ve vlastnosti „Name“. .

- Ve vlastnosti „Zdroj řádků“ rozbalovacího pole zadejte název daný seznamu zón v „Seznamu správců“.

- Naše rozevírací seznam by nyní měl v rozevíracím seznamu v aplikaci Excel zobrazovat názvy zón.

- Pro „Zadejte své heslo“ musíme vložit „Textové pole“ ze sady nástrojů.

- U tohoto „textového pole“ musíme změnit vlastnost „Název“ a změnit ji na „Heslo_TB“.

Nyní v kódování pro přihlašovací formulář VBA bude „Combo Box“ označen názvem „Zone_List_ComboBox“ a „Textové pole“ bude označeno názvem „Password_TB“.
- Vložte dvě „příkazová tlačítka“ a zadejte text jako „Přihlásit se“ a „Odhlásit se“.

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
- V kódování musíte použít stejná jména, která jsme dali uživatelskému formuláři, textovému poli a příkazovému tlačítku a poli se seznamem.
- Název a heslo zóny můžete změnit podle svého přání.