Obrazec za prijavo v Excel VBA
V Excelu VBA je mogoče ustvariti uporabniški obrazec, ki temelji na prijavi, z vsemi spustnimi seznami za prijavo, geslo pa bo dano v skupno rabo. V določenem trenutku ste se morali zamisliti o ustvarjanju uporabniškega obrazca za prijavo na podlagi gesla, ki od uporabnika zahteva, da izbere svoj uporabniški ID in vnese geslo za dostop do zahtevanega delovnega lista.
V tem članku vam bomo pokazali, kako ustvarite uporabniški obrazec za prijavo z uporabo excela VBA.

Kako ustvariti uporabniški obrazec za prijavo?
Recimo, da imate na različnih delovnih listih prodajne številke glede na regijo. Imamo 4 različna imena con in vsak delovni list območja ima samo povezane podatke. Zdaj je ideja ustvariti prijavni obrazec, v katerem bi vodja prodaje območja "vzhod" videl samo podatke območja "vzhod", ne drugih območij, kot skrbnik pa bi morali videti vse delovne liste con.
Najprej moramo vstaviti ime lista z imenom »Skrbnik«. V tem skrbniškem listu moramo ustvariti poverilnici »Prijava v ID« in »Geslo«.

Območje in geslo sem poimenoval enako, kar lahko pozneje spremenite. Za imena območij sem ustvaril obseg imen kot »ZoneList«. Ta »Upravitelj imen« bo uporabljen pozneje v tem uporabniškem obrazcu za prijavo.

Ko uporabnik odpre datoteko, bi moral v ozadju videti en lažni list, zato ustvarite nov list in ga poimenujte kot »Dummy« Sheet. «

S pomočjo teh delovnih listov bomo ustvarili uporabniški obrazec za prijavo.
1. korak: Vstavite uporabniški obrazec
Pritisnite alt = "" + tipko F11, da odprete okno urejevalnika VBA.

- Na zavihku »Vstavi« vstavite »Uporabniški obrazec«.

- Tako boste ustvarili nov uporabniški obrazec, kot je spodnji.

- Pritisnite tipko F4, da se prikaže okno Lastnosti. V tem oknu lastnosti spremenite ime uporabniškega obrazca v “LoginUF”

- Podobno se lahko v tem oknu lastnosti igramo z lastnostmi uporabniškega obrazca. Naredil sem nekaj lastninskih sprememb. V spodnjem oknu lastnosti lahko uporabite spremembe lastnosti uporabniškega obrazca.

- Zdaj je moj uporabniški obrazec videti tako.

2. korak: Oblikujte uporabniško obliko
- Iz orodjarne uporabniškega obrazca vstavite dve polji z nalepkami in vnesite besedilo, kot je prikazano spodaj.

- V orodjarni vstavite »Combo Box«.

- Za to kombinirano polje excel moramo imena con dobiti na delovnem listu »Admin Sheet«, zato v oknu z lastnostmi »Combo Box« najprej damo temu kombiniranemu polju ime »Zone_List_ComboBox« pod lastnostjo »Name« .

- V lastnosti »Row Source« v kombiniranem polju vnesite ime, dodeljeno seznamu con v »Admin Sheet«.

- Zdaj mora naše kombinirano polje na spustnem seznamu v Excelu prikazati imena con.

- Za »Enter You Password« moramo v orodno polje vstaviti »Text Box«.

- Za to »besedilno polje« moramo spremeniti lastnost »Name« in jo spremeniti kot »Password_TB«.

Zdaj bo v kodiranju obrazca za prijavo VBA »Combo Box« označen z imenom »Zone_List_ComboBox«, »Text Box« pa z imenom »Password_TB«.
- Vstavite dva »ukazna gumba« in vnesite besedilo kot »Prijava« in »Odjava«.

Za ukazni gumb »Prijavi se« spremenite lastnost imena v »Login_CommandButton«, za ukazni gumb »Odjava« pa lastnost imena v »LogOut_CommandButton«.
3. korak: koda
Končali smo z delom za oblikovanje obrazca za prijavo v VBA. Čas je, da napišete kodo, da v Excelu VBA ustvarite uporabniški obrazec, ki temelji na prijavi.
- Dvokliknite ukazni gumb »Prijavi se«. S tem se bo odprl prazen podproces, kot je spodnji.

V tem postopku moramo napisati kodo o tem, kaj se mora zgoditi, če pritisnemo gumb »Prijava«.
Kodo sem že napisal. Kodo lahko kopirate in prilepite od spodaj v zgornji postopek.
Koda:
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
- Uporabiti morate enaka imena, ki smo jih dali k uporabniškemu obrazcu, besedilnemu polju, ukaznemu gumbu in kombiniranemu polju v kodiranju.
- Ime in geslo cone lahko spremenite po svoji želji.