Formulário de login VBA

Formulário de login do Excel VBA

É possível criar um formulário de usuário baseado em login no Excel VBA com toda a lista suspensa de id de login e a senha será compartilhada separadamente. Em algum momento, você deve ter tido a ideia de criar um formulário de login de usuário baseado em senha, que requer que o usuário escolha seu ID de usuário e digite a senha para acessar a planilha necessária.

Neste artigo, mostraremos como criar um formulário de usuário de login usando o Excel VBA.

Como criar um formulário de login de usuário?

Por exemplo, suponha que você tenha números de vendas regionais em planilhas diferentes. Temos 4 nomes de zona diferentes e cada planilha de zona tem seus dados relacionados apenas. Agora, a ideia é criar um formulário de login onde o chefe de vendas da zona “Leste” deve ver apenas os dados da zona “Leste”, não quaisquer outras zonas, mas como um administrador, você deve ver todas as planilhas de zonas.

Você pode baixar este modelo Excel de login VBA aqui - Modelo Excel de login VBA

Primeiro, precisamos inserir um nome de planilha chamado “Admin”. Nesta planilha de administração, precisamos criar credenciais de “Id de login” e “Senha”.

Nomeei a zona e a senha da mesma forma, você pode alterar isso mais tarde. Para nomes de zona, criei o intervalo de nomes como “ZoneList”. Este “Gerenciador de nomes” será usado posteriormente neste formulário de usuário de login.

Quando o usuário abre o arquivo, ele deve ver uma planilha fictícia em segundo plano, então crie uma nova planilha e nomeie-a como “Planilha fictícia”.

Usando essas planilhas, criaremos um formulário de login de usuário.

Etapa 1: inserir o formulário do usuário

Pressione a tecla ALT + F11 para abrir a janela do Editor VBA.

  • Na guia “Inserir”, insira “Formulário do usuário”.

  • Isso criará um novo formulário de usuário como o abaixo.

  • Pressione a tecla F4 para ver a janela Propriedades, a partir desta janela de propriedades, altere o nome do formulário do usuário para “LoginUF”

  • Da mesma forma, usando esta janela de propriedades, podemos brincar com as propriedades do formulário do usuário. Eu fiz algumas alterações nas propriedades, você pode consultar a janela de propriedades abaixo para aplicar as alterações nas propriedades do formulário do usuário.

  • Agora meu formulário de usuário se parece com isso.

Etapa 2: Design do formulário do usuário

  • Na caixa de ferramentas do formulário do usuário, insira duas caixas de rótulo e insira o texto conforme mostrado abaixo.

  • Na caixa de ferramentas, insira “Caixa de combinação”.

  • Para este combo box excel, precisamos obter os nomes das zonas da planilha “Admin Sheet”, então da janela de propriedades da “Combo Box” primeiro dê um nome para este combo box como “Zone_List_ComboBox” na propriedade “Name”.

  • Na propriedade “Origem da linha” da caixa de combinação, insira o nome dado à lista de zonas na “Planilha de administração”.

  • Agora, nossa caixa de combinação deve mostrar os nomes das zonas em sua lista suspensa no Excel.

  • Para “Digite sua senha”, precisamos inserir uma “Caixa de texto” da caixa de ferramentas.

  • Para esta “Caixa de Texto” precisamos alterar a propriedade “Nome” e alterá-la para “Senha_TB”.

Agora, na codificação do formulário de login do VBA, “Combo Box” será denominado “Zone_List_ComboBox” e “Text Box” será denominado “Password_TB”.

  • Insira dois “Botões de Comando” e digite o texto como “Login” e “Logout”.

Para o botão de comando “Log In” altere a propriedade do nome para “Login_CommandButton” e para o botão de comando “Log Out” altere a propriedade do nome para “LogOut_CommandButton”.

Etapa 3: Código

Concluímos a parte de design do formulário de login de usuário do VBA, é hora de escrever o código para criar um formulário de usuário baseado em login no Excel VBA.

  • Clique duas vezes no botão de comando “Log In” para abrir o subprocedimento em branco como o abaixo.

Dentro deste procedimento, precisamos escrever o código sobre o que deve acontecer se o botão “Log In” for pressionado.

Eu já escrevi o código, você pode copiar e colar o código abaixo dentro do procedimento acima.

Código:

Private Sub Login_CommandButton_Click () If Zone_List_ComboBox.Value = "" Then MsgBox "Zona não pode ficar em branco !!!", vbInformation, "Nome da zona" Sair Sub End If If Password_TB.Value = "" Then MsgBox "Senha não pode ficar em branco !! ! ", 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"). Selecione 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 "A senha não corresponde", vbInformation,"Senha errada" Exit Sub End If If If Password = Password_TB.Value Then Unload Me Sheets (ZoneName) .Visible = True Sheets (ZoneName) .Selecione ActiveSheet.Range ("A1"). Selecione End If End If End Sub

Da mesma forma, clique duas vezes no botão de comando “Log Out” e digite o código abaixo.

Código:

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

Agora clique duas vezes em “User Form” (não em nenhum dos botões inseridos) e adicione o código abaixo.

Código:

Private Sub UserForm_QueryClose (Cancel As Integer, CloseMode As Integer) 'Impede o uso do botão Fechar If CloseMode = vbFormControlMenu Then MsgBox "Clicar no botão Fechar não funciona." Cancelar = True End If End Sub

  • Agora clique duas vezes no ícone “ThisWorkbook”. Isso abrirá abaixo do campo de código em branco.

Agora adicione o código abaixo neste campo em branco.

Código:

 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.