Como criar um formulário no Microsoft Excel

Índice:

Anonim

o Formulário de reserva de curso é um formulário simples que ilustra os princípios de design do formulário de usuário e a codificação VBA associada.

Ele usa uma seleção de controles, incluindo caixas de texto, caixas de combinação, botões de opção agrupados em um quadro, caixas de seleção e botões de comando.

Quando o usuário clica no botão OK, sua entrada é inserida na próxima linha disponível na planilha.

Descrição do formulário excel:

Existem duas caixas de texto simples (Nome: e Telefone:) em que o usuário pode digitar texto livre e duas caixas de combinação (Departamento e Curso) que permite ao usuário escolher um item da lista.

Existem três botões de opção (Introdução, Intermediário e Avançado) agrupados em um quadro (Nível) para que o usuário possa escolher apenas uma das opções.

Existem duas caixas de seleção (Almoço Obrigatório e Vegetariano) que, por não estarem agrupados em uma moldura, podem ser escolhidos, se necessário. Porém, se a pessoa que faz a reserva não deseja almoçar, não precisamos saber se ela é vegetariana ou não. Então o Vegetariano a caixa de seleção fica acinzentada até que seja necessária.

Existem três botões de comando (OK, Cancelar e Forma limpa), cada um dos quais executa uma função predefinida quando clicado.

As configurações de propriedades de controle:

Ao controle Modelo Propriedade Configuração
UserForm UserForm Nome frmCourseBooking
Rubrica Formulário de reserva de curso
Nome Caixa de texto Nome txtName
Telefone Caixa de texto Nome txtPhone
Departamento Caixa combo Nome cboDepartment
Curso Caixa combo Nome cboCourse
Nível Quadro Nome fraLevel
Rubrica Nível
Introdução Botão de opção Nome optIntroduction
Intermediário Botão de opção Nome optIntermediate
Avançado Botão de opção Nome optAdvanced
Almoço Obrigatório Caixa de Seleção Nome chkLunch
Vegetariano Caixa de Seleção Nome chkVegetarian
Habilitado Falso
OK Botão de comando Nome cmdOk
Rubrica OK
Predefinição Verdade
Cancelar Botão de comando Nome cmdCancel
Rubrica Cancelar
Cancelar Verdade
Forma limpa Botão de comando Nome cmdClearForm

Criação de formulários no Excel

Se você deseja construir o formulário sozinho, simplesmente copie o layout mostrado na ilustração acima. Siga os passos abaixo:

1. Abra a pasta de trabalho à qual deseja que o formulário pertença (UserForms, como macros, devem ser anexados a uma pasta de trabalho) e alterne para o Editor do Visual Basic.

2. No Editor do Visual Basic, clique no Inserir formulário de usuário botão (ou vá para Inserir> UserForm).

3. Se a caixa de ferramentas não aparecer sozinha (primeiro clique no formulário para ter certeza de que não está escondida), clique no botão Caixa de ferramentas botão (ou vá para Exibir> Caixa de ferramentas).

4. Para colocar um controle no formulário, clique no botão apropriado na caixa de ferramentas e, em seguida, clique no formulário. Os controles podem ser movidos arrastando-os pelas bordas ou redimensionados arrastando os botões em torno de seu perímetro.

5. Para editar as propriedades de um controle, certifique-se de que o controle escolhido esteja selecionado e faça as alterações apropriadas no Propriedades janela. Se você não consegue ver a janela de propriedades, vá para Exibir> Janela de propriedades.

6. Para remover um controle do formulário, selecione-o e clique no botão Excluir tecla no seu teclado.

Um formulário de usuário não fará nada até que o código que conduz o formulário e seus vários controles seja criado. A próxima etapa é escrever o código que conduz o próprio formulário.

Adicionando o código: 1 Inicializando o formulário

Inicializando o formulário:

A maioria dos formulários precisa de algum tipo de configuração quando são abertos. Isso pode ser definir valores padrão, certificar-se de que os campos estão vazios ou criar listas de caixas de combinação. Este processo é chamado Inicializando o Formulário e é cuidado por uma macro chamada UserForm_Initialize (caso você esteja confuso com a minha grafia variada da palavra "initialis (z) e", é porque eu falo inglês e o VBA fala americano - mas não se preocupe, o VBA vai soletre para você!). Veja como construir o código para inicializar o Formulário de Reserva de Curso:
1. Para visualizar a janela de código do formulário, vá para Ver> Código ou clique F7.

2. Quando a janela de código é aberta pela primeira vez, ela contém um vazio UserForm_Click () procedimento. Use as listas suspensas no topo da janela de código para escolher UserForm e Inicializar. Isso criará o procedimento de que você precisa. Agora você pode excluir o procedimento UserForm_Click ().

3. Insira o seguinte código no procedimento:

Private Sub UserForm_Initialize () txtName.Value = "" txtPhone.Value = "" Com cboDepartment .AddItem "Vendas" .AddItem "Marketing" .AddItem "Administração" .AddItem "Design" .AddItem "Publicidade" .AddItem "Expedição". AddItem "Transporte" End With cboDepartment.Value = "" Com cboCourse .AddItem "Access" .AddItem "Excel" .AddItem "PowerPoint" .AddItem "Word" .AddItem "FrontPage" End With cboCourse.Value = "" optIntroduction = True chkLunch = False chkVegetarian = False txtName.SetFocus End Sub 

Como funciona o código de inicialização:

O objetivo do procedimento UserForm_Initialize () é preparar o formulário do usuário em VBA para uso, definindo os valores padrão para os vários controles e criando as listas que as caixas de combinação mostrarão.

Essas linhas definem o conteúdo das duas caixas de texto como vazio:

txtName.Value = "" txtPhone.Value = "" 

Em seguida, vêm as instruções para as caixas de combinação. Em primeiro lugar, o conteúdo da lista é especificado e, em seguida, o valor inicial da caixa de combinação é definido como vazio.

Com cboDepartment .AddItem "Vendas" .AddItem "Marketing" (tantos quanto necessário …) End With 

cboDepartment.Value = ""

Se necessário, uma escolha inicial pode ser feita a partir do grupo de opções, neste caso:

optIntroduction = True

Ambas as caixas de seleção são definidas como False (ou seja, sem marca). Defina como True se desejar que a caixa de seleção apareça já marcada:

chkLunch = False

chkVegetarian = False

Finalmente, o foco é levado para a primeira caixa de texto. Isso coloca o cursor do usuário na caixa de texto para que eles não precisem clicar na caixa antes de começar a digitar:

txtName.SetFocus

Adicionando o Código: 2 Fazendo os Botões Funcionarem

Existem três botões de comando no formulário e cada um deve ser acionado por seu próprio procedimento. Começando com os mais simples …

Codificando o botão Cancelar:

Anteriormente, usamos a janela de propriedades para definir o Cancelar propriedade do botão Cancelar para Verdade. Quando você define a propriedade Cancelar de um botão de comando como Verdadeiro, isso tem o efeito de "clicar" naquele botão quando o usuário pressiona o Esc tecla em seu teclado. Mas isso por si só não fará com que nada aconteça com o formulário. É necessário criar o código para o evento click do botão que, neste caso, fecha o formulário. Veja como:

1. Com o formulário de usuário aberto para edição no Editor do Visual Basic, clique duas vezes no botão Cancelar. A janela de código do formulário é aberta com o cmdCancel_Click () procedimento pronto para edição.

2. O código para fechar um formulário é muito simples. Adicione uma linha de código ao procedimento para que fique assim:

Private Sub cmdCancel_Click () Unload Me End Sub 

Codificando o botão Limpar formulário:

Eu adicionei um botão para limpar o formulário caso o usuário quisesse mudar de ideia e redefinir tudo, e para tornar mais fácil se ele tivesse várias reservas para fazer ao mesmo tempo. Tudo o que precisa fazer é executar o procedimento de inicialização novamente. Uma macro pode ser informada para executar outra macro (ou uma série de macros, se necessário) usando o Ligar palavra-chave:

1. Clique duas vezes no botão Limpar formulário. A janela de código do formulário é aberta com o cmdClearForm_Click () procedimento pronto para edição.

2. Adicione uma linha de código ao procedimento para que tenha a seguinte aparência:

Private Sub cmdClearForm_Click () Chamar UserForm_Initialize End Sub 

Codificando o botão OK:

Este é o trecho de código que deve fazer o trabalho de transferir as escolhas do usuário e a entrada de texto para a planilha. Quando definimos a propriedade Cancelar do botão Cancelar como True, também definimos a propriedade do botão OK Predefinição propriedade para Verdade. Isso consiste em clicar no botão OK quando o usuário pressiona o Digitar (ou Retornar) tecla em seu teclado (desde que não tenham usado seu Aba para alternar para outro botão). Este é o código para fazer o botão funcionar:

1. Clique duas vezes no botão OK. A janela de código do formulário é aberta com o cmdOK_Click () procedimento pronto para edição.

2. Edite o procedimento para adicionar o seguinte código:

Private Sub cmdOK_Click () ActiveWorkbook.Sheets ("Course Bookings"). Activate Range ("A1"). Selecione Do If IsEmpty (ActiveCell) = FalseThen ActiveCell.Offset (1, 0) .Selecione End If Loop até IsEmpty (ActiveCell) = True ActiveCell.Value = txtName.Value ActiveCell.Offset (0, 1) = txtPhone.Value ActiveCell.Offset (0, 2) = cboDepartment.Value ActiveCell.Offset (0, 3) = cboCourse.Value Se optIntroduction = True Then ActiveCell.Offset (0, 4) .Value = "Intro" ElseIf optIntermediate = True Then ActiveCell.Offset (0, 4) .Value = "Intermed" Else ActiveCell.Offset (0, 4) .Value = "Adv" End If If chkLunch = True Then ActiveCell.Offset (0, 5) .Value = "Sim" Else ActiveCell.Offset (0, 5) .Value = "Não" End If If chkVegetarian = True Then ActiveCell.Offset (0, 6). Value = "Sim" Else If chkLunch = False Then ActiveCell.Offset (0, 6) .Value = "" Else ActiveCell.Offset (0, 6) .Value = "Não" End If End If Range ("A1"). Selecione End Sub 

Como funciona o código CmdOK_Click:

As primeiras duas linhas garantem que a pasta de trabalho correta está ativa e move a seleção para a célula A1:

ActiveWorkbook.Sheets ("Course Bookings"). Ative Range ("A1"). Select As próximas linhas movem a seleção para baixo na planilha até encontrar uma célula vazia: Do If IsEmpty (ActiveCell) = False Then ActiveCell.Offset (1 , 0) .Selecione End If Loop Até IsEmpty (ActiveCell) = True 

As próximas quatro linhas começam a escrever o conteúdo do formulário na planilha, usando a célula ativa (que está na coluna A) como referência e movendo ao longo da linha uma célula de cada vez:

ActiveCell.Value = txtName.Value ActiveCell.Offset (0, 1) = txtPhone.Value ActiveCell.Offset (0, 2) = cboDepartment.Value ActiveCell.Offset (0, 3) = cboCourse.Value 

Agora chegamos aos botões de opção. Eles foram colocados em um quadro no formulário para que o usuário pudesse escolher apenas um. Uma instrução IF é usada para instruir o Excel sobre o que fazer para cada opção:

If optIntroduction = True Then ActiveCell.Offset (0, 4) .Value = "Intro" ElseIf optIntermediate = True Then ActiveCell.Offset (0, 4) .Value = "Intermed" Else ActiveCell.Offset (0, 4) .Value = "Adv" End If 

As instruções IF do VBA são muito mais fáceis de gerenciar do que a função IF do Excel. Você pode ter quantas opções quiser, basta inserir um adicional ElseIf para cada um. Se houvesse apenas duas opções, você não precisaria do ElseIf, apenas o Se e Outro seria suficiente (não se esqueça - todos eles precisam de um Fim se).

Há outra instrução IF para cada caixa de seleção. Para a caixa de seleção Almoço obrigatório, uma marca na caixa significa "Sim", a pessoa precisa do almoço, e nenhuma marca significa "Não".

If chkLunch = True Then ActiveCell.Offset (0, 5) .Value = "Sim" Else ActiveCell.Offset (0, 5) .Value = "Não" End If 

Poderíamos usar uma declaração IF semelhante para a caixa de seleção Vegetariana, mas se a pessoa não requerer almoço, é irrelevante se ela é vegetariana ou não. De qualquer forma, seria errado presumir que eles não eram vegetarianos simplesmente porque não precisavam de almoço. A instrução IF, portanto, contém uma segunda instrução if aninhada:

If chkVegetarian = True Then ActiveCell.Offset (0, 6) .Value = "Sim" Else If chkLunch = False Then ActiveCell.Offset (0, 6) .Value = "" Else ActiveCell.Offset (0, 6) .Value = "Não" End If End If 

Uma marca na caixa significa "Sim", a pessoa é vegetariana. Se não houver nenhuma marca na caixa, a instrução IF aninhada olhará para a caixa de seleção Lunch Required. Se a caixa de seleção Almoço necessário estiver marcada, a ausência de marcação na caixa de seleção Vegetariana significa que a pessoa não é vegetariana, portanto, será inserido "Não" na célula. No entanto, se a caixa de seleção Almoço necessário não estiver marcada, não sabemos se a pessoa é vegetariana ou não (não importa), então a célula é deixada em branco ("").

Finalmente, a seleção é levada de volta ao início da planilha, pronta para a próxima entrada:

Intervalo ("A1"). Selecione

Adicionando o Código 3: Manipulando o Formulário

Finalmente, um exemplo de como os controles em um formulário podem ser manipulados enquanto ele está em uso. Quando as propriedades do controle foram definidas, o Habilitado propriedade da caixa de seleção Vegetariana foi definida como Falso. Quando um controle não está habilitado, o do utilizador não pode inserir um valor nele, embora possa conter um valor que já estava lá, e o VBA pode adicionar, remover ou alterar o valor.

Não precisamos saber se a pessoa é vegetariana ou não (mesmo que seja!) Se não estiver pedindo o almoço. Portanto, a caixa de seleção Vegetariana permanece desabilitada, a menos que uma marca seja colocada na caixa de seleção Almoço necessário. Em seguida, o usuário fica livre para marcar a caixa de seleção Vegetariana, se desejar. Se marcarem, saberemos que responderam "Sim" e, se não o fizerem, saberemos que responderam "Não".

Podemos alternar o Habilitado propriedade de Falso para Verdade por ter um procedimento que é executado automaticamente sempre que o valor da caixa de seleção Lunch Required muda. Felizmente, mais controles têm um Mudar procedimento e o que usamos aqui é chkLunch_Change (). Usaremos isso para habilitar a caixa de seleção Vegetariano quando a caixa de seleção Almoço Requerido estiver marcada, e desabilitá-la quando a caixa de seleção Almoço Requerido não estiver marcada.

Só precisamos fazer mais uma coisa. Suponha que alguém tenha marcado a caixa de seleção Almoço necessário e também a caixa de seleção Vegetariana. Em seguida, eles mudaram de ideia e removeram a marca da caixa de seleção Almoço necessário. A caixa de seleção Vegetariana seria desabilitada, mas a marca que foi colocada anteriormente permaneceria.

Uma linha extra de código pode garantir que a marca seja removida quando a caixa for desativada. Aqui está a coisa toda:

Sub privado chkLunch_Change () Se chkLunch = Verdadeiro Então chkVegetarian.Enabled = Verdadeiro Else chkVegetarian.Enabled = Falso chkVegetarian = Falso End If End Sub 

Abrindo o Formulário

O formulário agora está pronto para uso, portanto, precisa ser aberto com uma macro simples. Isso pode ser anexado a um botão personalizado da barra de ferramentas, a um botão de comando desenhado na planilha ou a qualquer gráfico (clique com o botão direito no gráfico e escolha Atribuir Macro) Se necessário, crie um novo módulo para a pasta de trabalho e adicione este procedimento:

Sub OpenCourseBookingForm () frmCourseBooking.Show End Sub 

Se você gostou de nossos blogs, compartilhe com seus amigos no Facebook. E você também pode nos seguir no Twitter e no Facebook.
Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar, complementar ou inovar nosso trabalho e torná-lo melhor para você. Escreva-nos no site de e-mail