Formularz logowania do VBA

Formularz logowania Excel VBA

Możliwe jest utworzenie formularza użytkownika opartego na logowaniu w Excel VBA z całą rozwijaną listą identyfikatorów logowania, a hasło będzie udostępniane osobno. W pewnym momencie musiałeś mieć pomysł na utworzenie formularza logowania użytkownika opartego na haśle, który wymaga od użytkownika wybrania swojego identyfikatora użytkownika i wprowadzenia hasła, aby uzyskać dostęp do wymaganego arkusza roboczego.

W tym artykule pokażemy, jak utworzyć formularz logowania użytkownika za pomocą programu Excel VBA.

Jak utworzyć formularz logowania użytkownika?

Załóżmy na przykład, że w różnych arkuszach roboczych znajdują się dane dotyczące sprzedaży według regionu. Mamy 4 różne nazwy stref, a każdy arkusz strefy zawiera tylko powiązane dane. Teraz chodzi o to, aby utworzyć formularz logowania, w którym kierownik działu sprzedaży ze strefy „Wschód” powinien widzieć tylko dane strefy „Wschód”, a nie inne strefy, ale jako administrator powinieneś zobaczyć wszystkie arkusze robocze stref.

Możesz pobrać ten szablon VBA Login Excel tutaj - VBA Login Excel Template

Najpierw musimy wstawić nazwę arkusza o nazwie „Administrator”. W tym arkuszu administratora musimy utworzyć poświadczenia „Identyfikator logowania” i „Hasło”.

Nazwałam strefę i hasło takie same, które można później zmienić. Dla nazw stref utworzyłem zakres nazw jako „ZoneList”. Ten „Menedżer nazw” będzie używany później w tym formularzu logowania.

Kiedy użytkownik otworzy plik, powinien zobaczyć jeden fikcyjny arkusz w tle, więc utwórz nowy arkusz i nazwij go „Dummy” Sheet ”.

Korzystając z tych arkuszy, utworzymy formularz logowania użytkownika.

Krok 1: Wstaw formularz użytkownika

Naciśnij klawisze ALT + F11, aby otworzyć okno edytora VBA.

  • Z zakładki „Wstaw” wstaw „Formularz użytkownika”.

  • Spowoduje to utworzenie nowego formularza użytkownika, takiego jak poniższy.

  • Naciśnij klawisz F4, aby wyświetlić okno Właściwości, w tym oknie właściwości zmień nazwę formularza użytkownika na „LoginUF”

  • Podobnie używając tego okna właściwości możemy bawić się właściwościami formularza użytkownika. Dokonałem niektórych zmian właściwości, możesz odwołać się do poniższego okna właściwości, aby zastosować zmiany we właściwościach formularza użytkownika.

  • Teraz mój formularz użytkownika wygląda tak.

Krok 2: Zaprojektuj formularz użytkownika

  • Z przybornika formularza użytkownika wstaw dwa pola etykiet i wprowadź tekst, jak pokazano poniżej.

  • Z przybornika wstaw „Combo Box”.

  • W przypadku tego pola rozwijanego programu Excel musimy pobrać nazwy stref z arkusza roboczego „Arkusz administratora”, więc z okna właściwości „pola kombi” najpierw nadaj temu polu rozwijanemu nazwę jako „Zone_List_ComboBox” we właściwości „Name”.

  • Z właściwości „Źródło wierszy” w polu kombi wprowadź nazwę nadaną liście stref w „Arkuszu administracyjnym”.

  • Teraz nasze pole kombi powinno wyświetlać nazwy stref na liście rozwijanej w programie Excel.

  • W przypadku „Wprowadź hasło” musimy wstawić „Pole tekstowe” z przybornika.

  • W tym „polu tekstowym” musimy zmienić właściwość „Nazwa” i zmienić ją na „Hasło_TB”.

Teraz w kodowaniu formularza logowania VBA, „Combo Box” będzie oznaczane nazwą „Zone_List_ComboBox”, a „Text Box” będzie określane nazwą „Password_TB”.

  • Wstaw dwa „Przyciski poleceń” i wprowadź tekst jako „Zaloguj” i „Wyloguj”.

W przypadku przycisku polecenia „Zaloguj się” zmień właściwość name na „Login_CommandButton”, a dla przycisku polecenia „Wyloguj” zmień właściwość name na „LogOut_CommandButton”.

Krok 3: Kod

Skończyliśmy z częścią projektowania formularza logowania użytkownika VBA, czas napisać kod, aby utworzyć formularz użytkownika oparty na logowaniu w Excel VBA.

  • Kliknij dwukrotnie przycisk polecenia „Zaloguj się”, co spowoduje otwarcie pustej procedury podrzędnej, takiej jak ta poniżej.

Wewnątrz tej procedury musimy napisać kod informujący, co powinno się stać po naciśnięciu przycisku „Zaloguj się”.

Kod już napisałem, możesz skopiować i wkleić kod od dołu wewnątrz powyższej procedury.

Kod:

Private Sub Login_CommandButton_Click () Jeśli Zone_List_ComboBox.Value = "" Następnie MsgBox "Strefa nie może być pusta !!!", vbInformation, "Nazwa strefy" Zakończ Sub End, jeśli Password_TB.Value = "" To MsgBox "Hasło nie może być puste !! !!! („Admin”). Wybierz opcję Inaczej Dim ZoneName jako String Dim Password As Variant ZoneName = Zone_List_ComboBox.Value Password = Application.WorksheetFunction.VLookup (ZoneName, Sheets („Admin”). Range („A: B”), 2, 0 ) Jeśli hasło Password_TB.Value Then MsgBox "Hasło jest niezgodne", vbInformation,„Wrong Password” Exit Sub End If Password = Password_TB.Value Then Unload Me Sheets (ZoneName) .Visible = True Sheets (ZoneName) .Wybierz ActiveSheet.Range („A1”). Wybierz End If End If End Sub

Podobnie, dwukrotnie kliknij przycisk polecenia „Wyloguj” i wprowadź poniższy kod.

Kod:

 Private Sub LogOut_CommandButton_Click () ThisWorkbook.Save ThisWorkbook.Close End Sub 

Teraz kliknij dwukrotnie „Formularz użytkownika” (nie na żadnym z wstawionych przycisków) i dodaj poniższy kod.

Kod:

Private Sub UserForm_QueryClose (Cancel As Integer, CloseMode As Integer) 'Uniemożliwia użycie przycisku Zamknij If CloseMode = vbFormControlMenu Then MsgBox "Kliknięcie przycisku Zamknij nie działa." Cancel = True End If End Sub

  • Teraz kliknij dwukrotnie ikonę „ThisWorkbook”. Otworzy się poniżej pustego pola kodu.

Teraz dodaj poniższy kod w tym pustym polu.

Kod:

 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

  • You need to use the same names that we have given to the user form, text box, and command button and combo box in the coding.
  • You can change the zone name and password according to your wish.