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 utworzenie formularza logowania, w którym kierownik działu sprzedaży ze strefy „wschodniej” powinien widzieć tylko dane strefy „wschód”, a nie inne strefy, ale jako administrator powinieneś zobaczyć wszystkie arkusze robocze stref.
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.

Gdy użytkownik otworzy plik, powinien zobaczyć w tle jeden fikcyjny arkusz, więc utwórz nowy arkusz i nazwij go „Arkusz zastępczy”. ”

Korzystając z tych arkuszy, utworzymy formularz logowania użytkownika.
Krok 1: Wstaw formularz użytkownika
Naciśnij klawisz alt = "" + F11, aby otworzyć okno Edytora VBA.

- Na karcie „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, korzystając z tego okna właściwości, możemy bawić się właściwościami formularza użytkownika. Dokonałem kilku zmian właściwości. Możesz skorzystać z 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.

- W przyborniku wstaw „Combo Box”.

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

- We 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 „Wpisz hasło” musimy wstawić „Pole tekstowe” z przybornika.

- W przypadku tego „pola tekstowego” musimy zmienić właściwość „Nazwa” i zmienić ją na „Hasło_TB”.

Teraz w kodowaniu formularza logowania VBA, „Combo Box” będzie określane nazwą „Zone_List_ComboBox”, a „Text Box” będzie określane nazwą „Password_TB”.
- Wstaw dwa „Przyciski poleceń” i wprowadź tekst jako „Zaloguj się” i „Wyloguj”.

Dla przycisku polecenia „Zaloguj się” zmień właściwość nazwy 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ą projektową formularza logowania użytkownika VBA. Nadszedł czas, aby napisać kod, aby utworzyć formularz użytkownika oparty na logowaniu w Excel VBA.
- Kliknij dwukrotnie przycisk polecenia „Zaloguj się”. Spowoduje to otwarcie pustej procedury podrzędnej, takiej jak poniższa.

Wewnątrz tej procedury musimy napisać kod informujący, co powinno się stać po naciśnięciu przycisku „Zaloguj się”.
Już napisałem kod. Możesz skopiować i wkleić kod poniżej w powyższej procedurze.
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 !! ! ", vbInformation," Password "Zakończ Sub End, jeśli Zone_List_ComboBox.Value =" Admin "And Password_TB.Value =" Admin "Następnie wyładuj mnie Dim Ws as Worksheet for each Ws in ActiveWorkbook.Worksheets Ws.Visible = xlSheetVisible Next Ws Sheets („Admin”). Wybierz opcję Inaczej Dim ZoneName jako String Dim Password As Variant ZoneName = Zone_List_ComboBox.Value Hasło = 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”).
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 w ActiveWorkbook.Worksheets Jeśli Ws.Name "Dummy" Then Ws.Visible = xlSheetVeryHidden End If Next Ws LogInUF.Show End Sub

- Skończyliśmy z kodowaniem części formularza. Zapisz skoroszyt jako skoroszyt z włączoną obsługą makr i otwórz go ponownie. Po ponownym otwarciu skoroszytu powinno pojawić się poniższe okno.

- Z tego formularza użytkownika musimy wybrać odpowiednią nazwę strefy i wprowadzić związane z nią hasło. Na przykład wybiorę strefę „Wschód” z menu rozwijanego i wprowadzę hasło.

- Jeśli kliknę „Zaloguj się”, zobaczymy tylko arkusz strefy „Wschód”.

Podobnie, jeśli zalogujemy się jako „Administrator”, mamy dostęp do wszystkich arkuszy.

W ten sposób możemy utworzyć arkusz roboczy chroniony hasłem na podstawie logowania.
Rzeczy do zapamiętania
- Musisz użyć tych samych nazw, które nadaliśmy formularzowi użytkownika, polu tekstowemu i przyciskowi polecenia oraz polu kombi w kodowaniu.
- Możesz zmienić nazwę strefy i hasło według własnego uznania.