Macros do Excel - UserForms

Às vezes, você pode ter que coletar informações repetidamente de outras pessoas. O Excel VBA fornece uma maneira fácil de lidar com essa tarefa-UserForm. Como qualquer outro formulário que você preenche, UserForm torna simples de entender quais informações devem ser fornecidas. O UserForm é amigável no sentido de que os controles fornecidos são autoexplicativos, acompanhados de instruções adicionais quando necessário.

A principal vantagem do UserForm é que você pode economizar tempo gasto com o que e como as informações devem ser preenchidas.

Criando um UserForm

Para criar um UserForm, proceda da seguinte forma -

  • Clique na guia DEVELOPER na faixa de opções.
  • Clique em Visual Basic. Uma janela do Visual Basic para a pasta de trabalho é aberta.
  • Clique em Inserir,
  • Selecione UserForm na lista suspensa.

O formulário de usuário aparece no lado direito da janela.

Compreendendo o UserForm

Maximize a janela UserForm.xlsx - UserForm1.

Você está no modo de design agora. Você pode inserir controles no formulário de usuário e escrever código para as respectivas ações. Os controles estão disponíveis na Caixa de Ferramentas. As propriedades do UserForm estão na janela Propriedades. UserForm1 (legenda do UserForm) é fornecido em Formulários no Explorador de projetos.

  • Altere a legenda do formulário de usuário para Relatório de projeto - diário na janela de propriedades.
  • Altere o nome do UserForm para ProjectReport.

As mudanças são refletidas no UserForm, propriedades e explorador de projeto.

Controles na caixa de ferramentas

Um UserForm terá componentes diferentes. Ao clicar em qualquer um dos componentes, você receberá instruções sobre quais e como as informações devem ser fornecidas ou opções (opções) para selecionar. Todos estes são fornecidos por meio de controles ActiveX na Caixa de Ferramentas do UserForm.

O Excel fornece dois tipos de controles - controles de formulário e controles ActiveX. Você precisa entender a diferença entre esses dois tipos de controles.

Controles de formulário

Os controles de formulário são os controles originais do Excel compatíveis com versões anteriores do Excel, começando com o Excel versão 5.0. Os controles de formulário também são projetados para uso em folhas de macro XLM.

Você pode executar macros usando controles de formulário. Você pode atribuir uma macro existente a um controle ou escrever ou gravar uma nova macro. Quando o controle é clicado, a macro. Você já aprendeu como inserir um botão de comando dos controles de formulário na planilha para executar uma macro. No entanto, esses controles não podem ser adicionados a um formulário de usuário.

Controles ActiveX

Os controles ActiveX podem ser usados ​​em UserForms do VBA. Os controles ActiveX têm propriedades abrangentes que você pode usar para personalizar sua aparência, comportamento, fontes e outras características.

Você tem os seguintes controles ActiveX no UserForm ToolBox -

  • Pointer
  • Label
  • TextBox
  • ComboBox
  • ListBox
  • CheckBox
  • OptionButton
  • Frame
  • ToggleButton
  • CommandButton
  • TabStrip
  • MultiPage
  • ScrollBar
  • SpinButton
  • Image

Além desses controles, o Visual Basic fornece a função MsgBox que pode ser usada para exibir mensagens e / ou solicitar uma ação do usuário.

Nas próximas seções, você entenderá esses controles e MsgBox. Então, você poderá escolher quais desses controles são necessários para projetar seu formulário de usuário.

Rótulo

Você pode usar rótulos para fins de identificação, exibindo texto descritivo, como títulos, legendas e / ou instruções breves.

Example

Caixa de texto

Você pode usar um TextBox que é uma caixa retangular para digitar, visualizar ou editar texto. Você também pode usar um TextBox como um campo de texto estático que apresenta informações somente leitura.

Example

List Box

Você pode usar uma caixa de listagem para exibir uma lista de um ou mais itens de texto que um usuário pode escolher. Use uma caixa de listagem para exibir um grande número de opções que variam em número ou conteúdo.

  • Insira um ListBox no UserForm.
  • Clique em ListBox.
  • Digite ProjectCodes para Name na janela Properties do ListBox.

Existem três tipos de caixas de listagem -

  • Single-selection List box- Uma caixa de listagem de seleção única permite apenas uma escolha. Nesse caso, uma caixa de listagem se parece com um grupo de botões de opção, exceto que uma caixa de listagem pode controlar um grande número de itens com mais eficiência.

  • Multiple selection List Box - Uma caixa de listagem de seleção múltipla permite uma escolha ou opções contíguas (adjacentes).

  • Extended-selection List Box - Uma caixa de lista de seleção estendida permite uma escolha, escolhas contíguas e escolhas não contíguas (ou disjuntas).

Você pode selecionar um desses tipos de caixas de listagem na janela Propriedades.

  • Clique com o botão direito em UserForm.
  • Selecione Exibir código na lista suspensa. A janela de código do UserForm é aberta.
  • Clique em Inicializar na caixa superior direita da janela de código.
  • Digite o seguinte em Private Sub UserForm_Initialize ().
ProjectCodes.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5")
  • Clique na guia Executar na Faixa de Opções.
  • Selecione Executar Sub / UserForm na lista suspensa.

Em seguida, você pode escrever um código para ações ao selecionar um item na lista. Caso contrário, basta visualizar o texto que está selecionado, que é o caso do preenchimento do Código do Projeto no Relatório.

Caixa combo

Você pode usar ComboBoxque combina uma caixa de texto com uma caixa de listagem para criar uma caixa de listagem suspensa. Uma caixa de combinação é mais compacta do que uma caixa de listagem, mas requer que o usuário clique na seta para baixo para exibir a lista de itens. Use uma caixa de combinação para escolher apenas um item da lista.

  • Insira uma ComboBox no UserForm.
  • Clique na ComboBox.
  • Digite ProjectCodes2 para Nome na janela Propriedades do ComboBox.
  • Clique com o botão direito em UserForm.
  • Selecione Exibir código na lista suspensa.
  • A janela de código do UserForm é aberta.

Digite o seguinte conforme mostrado abaixo.

ProjectCodes2.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5")
  • Clique na guia Executar na Faixa de Opções.
  • Selecione Executar Sub / UserForm na lista suspensa.

Clique na seta para baixo para exibir a lista de itens.

Clique no item necessário, por exemplo, Project2016-5. A opção selecionada será exibida na caixa de combinação.

CheckBox

Você pode usar as caixas de seleção para selecionar uma ou mais opções que são exibidas clicando nas caixas. As opções terão rótulos e você pode visualizar claramente quais opções estão selecionadas.

Uma caixa de seleção pode ter dois estados -

  • Selecionado (ativado), denotado por uma marca de seleção na caixa
  • Limpo (desligado), denotado por uma caixa clara

Você pode usar as caixas de seleção para selecionar as opções em uma caixa de combinação para economizar espaço. Nesse caso, a caixa de seleção também pode ter um terceiro estado -

  • Misto, significando uma combinação de estados ativado e desativado, denotado por um ponto preto na caixa. Isso será exibido para indicar várias seleções na caixa de combinação com caixas de seleção.

  • Insira as caixas de seleção no formulário de usuário conforme mostrado abaixo.

  • Clique na guia Executar na Faixa de Opções.
  • Selecione Executar Sub / UserForm na lista suspensa.
  • Clique nas caixas das opções selecionadas.

OptionButton

Você pode usar um botão de opção, também conhecido como botão de opção, para fazer uma única escolha dentro de um conjunto limitado de opções mutuamente exclusivas. Um botão de opção geralmente está contido em uma caixa de grupo ou um quadro.

Um botão de opção é representado por um pequeno círculo. Um botão de opção pode ter um dos seguintes dois estados -

  • Selecionado (ativado), denotado por um ponto no círculo
  • Limpo (desligado), denotado por um espaço em branco

Quadro, Armação

Você pode usar um controle de quadro, também conhecido como caixa de grupo, para agrupar controles relacionados em uma unidade visual. Normalmente, botões de opção, caixas de seleção ou conteúdos relacionados são agrupados em um controle de quadro.

Um controle de quadro é representado por um objeto retangular com um rótulo opcional.

  • Insira uma moldura com a legenda “Escolha”.

  • Insira dois botões de opção com as legendas “Sim” e “Não” no controle do quadro. As opções Sim e Não são mutuamente exclusivas.

  • Clique na guia Executar na Faixa de Opções.
  • Selecione Executar Sub / UserForm na lista suspensa.
  • Clique na opção selecionada.

ToggleButton

Você pode usar um botão de alternância para indicar um estado, como Sim ou Não, ou um modo, como ligado ou desligado. O botão alterna entre um estado ativado e um desativado quando é clicado.

Insira um botão de alternância no UserForm como mostrado abaixo -

  • Clique na guia Executar na Faixa de Opções.

  • Selecione Executar Sub / UserForm na lista suspensa. O botão de alternância estará no estado habilitado por padrão.

Clique no botão de alternância. O botão de alternância será desativado.

Se você clicar no botão de alternância novamente, ele será ativado.

Botão de comando

Você pode usar um botão de comando para executar uma macro que executa algumas ações quando o usuário clica nela. Você já aprendeu como usar um botão de comando em uma planilha para executar uma macro.

O botão de comando também é conhecido como botão de pressão. Insira um botão de comando no UserForm como mostrado abaixo -

  • Clique com o botão direito no botão de comando.
  • Digite o seguinte código no sub Commandbutton1_click ().
ProjectCodes2.DropDown
  • Clique na guia Executar na Faixa de Opções.
  • Selecione Executar Sub / UserForm na lista suspensa.

Clique no botão de comando. A lista suspensa da caixa de combinação é aberta, pois é a ação que você escreveu no código.

TabStrip

Você pode inserir uma faixa de tabulação semelhante às guias do Excel no UserForm.

Barra de rolagem

Você pode usar uma barra de rolagem para rolar por um intervalo de valores clicando nas setas de rolagem ou arrastando a caixa de rolagem.

Insira uma barra de rolagem no UserForm desenhando-a na posição necessária e ajuste o comprimento da barra de rolagem.

  • Clique com o botão direito na barra de rolagem.
  • Selecione Exibir código na lista suspensa. A janela de código é aberta.
  • Adicione a seguinte linha em sub ScrollBar1_Scroll ().
TextBox2.Text = "Scrolling Values"
  • Clique na guia Executar na Faixa de Opções.
  • Selecione Executar Sub / UserForm na lista suspensa.

Arraste a caixa de rolagem. O Texto - Valores de Rolagem será exibido na caixa de texto conforme você especificou como a ação para a barra de rolagem.

MsgBox ()

Você pode usar a função MsgBox () para exibir uma mensagem ao clicar em algo. Pode ser uma diretriz ou alguma informação ou um aviso ou um alerta de erro.

Por exemplo, você pode exibir uma mensagem informando que os valores estão sendo rolados ao começar a rolar a caixa de rolagem.

Exibições de ícone de caixa de mensagem

Você pode usar telas de ícone de caixa de mensagem que retratam a mensagem específica. Você tem vários ícones de caixa de mensagem para atender a sua finalidade -

  • Digite o seguinte código em ScrollBar1_scroll.
MsgBox "Select Ok or Cancel", vbOKCancel, "OK  - Cancel Message" 
MsgBox "It's an Error!", vbCritical, "Run time result" 
MsgBox "Why this value", vbQuestion, "Run time result" 
MsgBox "Value Been for a Long Time", vbInformation, "Run time result" 
MsgBox "Oh Is it so", vbExclamation, "Run time result"
  • Clique na guia Executar na Faixa de Opções.
  • Selecione Executar Sub / UserForm na lista suspensa.
  • Arraste a caixa de rolagem.

Você receberá as seguintes caixas de mensagem sucessivamente.

Projetando UserForm

Agora, você tem uma compreensão dos diferentes controles que pode usar em um formulário de usuário. Selecione os controles, agrupe-os se necessário e organize-os no UserForm de acordo com alguma sequência significativa. Escreva as ações necessárias como código correspondente aos respectivos controles.

Consulte o tutorial do VBA nesta biblioteca de tutoriais para obter um exemplo de UserForm.