Modulo di accesso VBA di Excel
È possibile creare un modulo utente basato sull'accesso in Excel VBA con tutto l'elenco a discesa dell'ID di accesso e la password verrà condivisa separatamente. Ad un certo punto nel tempo, è necessario avere un'idea di creare un modulo utente di accesso basato su password, che richiede all'utente di scegliere il proprio ID utente e immettere la password per accedere al foglio di lavoro richiesto.
In questo articolo, ti mostreremo come creare un modulo utente di accesso utilizzando Excel VBA.

Come creare un modulo utente di accesso?
Ad esempio, supponi di avere numeri di vendita per regione in diversi fogli di lavoro. Abbiamo 4 diversi nomi di zona e ogni foglio di lavoro di zona ha solo i suoi dati correlati. Ora l'idea è di creare un modulo di accesso in cui il responsabile vendite della zona "Est" dovrebbe vedere solo i dati della zona "Est", non qualsiasi altra zona, ma come amministratore, dovresti vedere tutti i fogli di lavoro delle zone.
Innanzitutto, dobbiamo inserire un nome di foglio chiamato "Admin". In questo foglio di amministrazione, dobbiamo creare le credenziali di "ID di accesso" e "Password".

Ho denominato la zona e la password nello stesso modo che puoi modificare in seguito. Per i nomi delle zone, ho creato l'intervallo di nomi come "ZoneList". Questo "Name Manager" verrà utilizzato successivamente in questo modulo utente di accesso.

Quando l'utente apre il file, dovrebbe vedere un foglio fittizio in background, quindi crea un nuovo foglio e chiamalo Foglio "fittizio". "

Utilizzando questi fogli di lavoro, creeremo un modulo utente di accesso.
Passaggio 1: inserire il modulo utente
Premere alt = "" + F11 per aprire la finestra dell'editor VBA.

- Nella scheda "Inserisci", inserisci "Modulo utente".

- Questo creerà un nuovo modulo utente come quello sotto.

- Premere il tasto F4 per visualizzare la finestra Proprietà. Da questa finestra delle proprietà, cambia il nome del modulo utente in "LoginUF"

- Allo stesso modo, utilizzando questa finestra delle proprietà, possiamo giocare con le proprietà del modulo utente. Ho apportato alcune modifiche alla proprietà. È possibile fare riferimento alla finestra delle proprietà di seguito per applicare le modifiche alle proprietà del modulo utente.

- Ora il mio modulo utente ha questo aspetto.

Passaggio 2: progettazione del modulo utente
- Dalla casella degli strumenti del modulo utente, inserisci due caselle etichetta e inserisci il testo, come mostrato di seguito.

- Dalla casella degli strumenti, inserisci "Casella combinata".

- Per questa casella combinata Excel, dobbiamo ottenere i nomi delle zone dal foglio di lavoro "Foglio di amministrazione", quindi dalla finestra delle proprietà della "Casella combinata", prima dai un nome a questa casella combinata come "Zone_List_ComboBox" nella proprietà "Nome" .

- Dalla proprietà "Row Source" della casella combinata, inserisci il nome dato all'elenco delle zone nel "Admin Sheet".

- Ora la nostra casella combinata dovrebbe mostrare i nomi delle zone nel suo elenco a discesa in Excel.

- Per "Inserisci la tua password", dobbiamo inserire una "Casella di testo" dalla casella degli strumenti.

- Per questa "casella di testo", dobbiamo modificare la proprietà "Nome" e modificarla in "Password_TB".

Ora nella codifica per il modulo di accesso VBA, "Casella combinata" verrà indicata con il nome "Zone_List_ComboBox" e "Casella di testo" sarà indicata con il nome "Password_TB".
- Inserisci due "pulsanti di comando" e inserisci il testo come "Accedi" e "Esci".

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
- È necessario utilizzare gli stessi nomi che abbiamo assegnato al modulo utente, alla casella di testo e al pulsante di comando e alla casella combinata nella codifica.
- È possibile modificare il nome della zona e la password in base alle proprie esigenze.