Blog

Postado em em 15 de dezembro de 2022

InputBox no VBA para Cadastro de Funcionários

O InputBox no VBA é crucial para ajudar a automatizar cadastros e preenchimentos. Dessa forma, o programador perde menos tempo e deixa a planilha mais fácil de usar para pessoas não técnicas, sem tantos erros e problemas. 

Com apenas um botão, o usuário consegue adicionar uma informação em uma lista de itens, segundo o domínio da planilha em questão. 

Lembrando que você pode assistir esse conteúdo no formato de vídeo clicando no vídeo abaixo, ou pode acessar o nosso Canal do YouTube para mais vídeos!

O que é um InputBox no VBA?

O VBA InputBox é uma ferramenta que permite que o usuário insira uma informação e esta informação seja automaticamente registrada na planilha.

Quando utilizar um InputBox?

Podemos utilizar o InputBox para facilitar o registro de dados em uma planilha, tornando-o mais eficiente e menos suscetível a erros. 

O InputBox permite, por exemplo, o cadastro de funcionários em uma planilha, já organizando-os em ordem alfabética.

Como utilizar o Inputbox no VBA?

Em nosso exemplo, vamos considerar o caso citado, no qual queremos um InputBox para fazer o cadastro de funcionários em uma planilha.

Para fazer este cadastro, vamos utilizar o VBA para automatizar este processo que consiste em: ir até a última linha da planilha, acrescentar o novo funcionário, copiar a formatação para esta nova linha e, por fim, colocar a base de dados em ordem alfabética.

Para criarmos nosso código, abrimos o ambiente do VBA selecionando alt+F11 ou, caso não funcione, alt+fn+F11.

Vamos então criar nosso código, que neste exemplo chamamos de “cadastrar_funcionario”, digitando sub cadastrar_funcionario ()

Então, acrescentamos a seguinte linha ao código:

nome = InputBox(“Digite o nome do funcionário”)

Esta linha cria uma variável “nome”, que será o nome do funcionário a ser acrescentado. O texto “Digite o nome do funcionário” será exibido na tela por uma InputBox para que o usuário insira os dados.

A próxima linha do nosso código será a seguinte:

linha = Range(“A1”).End(xlDown).Row + 1

Com isso, criamos a variável linha, que seleciona a primeira linha da coluna A (Range(“A1”)), e faz o equivalente ao pressionar ctrl+seta para baixo no Excel. O comando End neste código é o equivalente ao ctrl e xlDown é a seta para baixo do teclado.

Acrescentamos o .Row para que seja retomada a linha referente à célula que estamos. Assim, acessamos a linha da última célula preenchida da planilha. Para acrescentarmos a informação de nome inserida pelo usuário, vamos somar 1 a essa linha para termos a primeira linha vazia da planilha (+ 1).

Agora, vamos acrescentar o seguinte ao nosso código:

Cells(linha, 1) = nome

Este comando faz com que a célula da linha que calculamos na variável linha, coluna A, seja preenchida com o texto contido na variável “nome” que criamos. Ou seja, este comando faz o input dos dados efetivamente na planilha.

Fechamos então nosso código acrescentando uma linha com o end sub:

End Sub

Podemos, agora, atribuir nosso código ao botão criado na planilha base, voltando ao Excel, clicando com o botão direito e selecionando “Atribuir Macro”.

Então, selecionamos a macro criada e clicamos em ok.

Com isso, ao clicarmos no botão o InputBox será acionado. Ao preenchermos o InputBox, o texto é automaticamente inserido na próxima linha vazia da planilha.

Precisamos agora ajustar nosso código para que a formatação seja copiada e os nomes sejam colocados em ordem alfabética após inseridos.

Para o ajuste da formatação, vamos gravar uma macro que copie a célula anterior e cole a formatação na célula atual. A gravação de macros consiste em gravarmos uma sequência de passos, onde o VBA consegue fazer esta leitura e trazê-los em código, podendo assim ser repetidos sempre que a macro for executada.

Para gravarmos esta macro, selecionamos Exibição > Macros > Gravar Macro…

Então, damos um nome a nossa macro, que neste exemplo é copiaformatação, e clicamos em ok:

Agora o VBA está gravando todos os comandos que forem feitos, que serão transformados em códigos e atribuídos a macro copiaformatação.

Então, clicamos no último funcionário cadastrado, copiamos (ctrl C) e colamos apenas a formatação para o funcionário novo. Para colar a formatação selecionamos Página Inicial > Colar > Outras Opções para Colar > Formatação (f).

Então, apertamos Esc e podemos parar a gravação da macro selecionando o botão a seguir:

Podemos agora abrir o VBA novamente e, selecionando Módulo2 no canto esquerdo, visualizamos nossa macro criada:

O código exibido será o seguinte, gerado automaticamente através da gravação da Macro:

Sub copiaformatação()

‘ copia formatação Macro


Range(“A14”).Select

Selection.Copy

Range(“A15”).Select

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _

SkipBlanks:=False, Transpose:=False

Range(“B9”).Select

Application.CutCopyMode = False

End Sub

Vamos então copiar este código gerado, a partir de Range, para a macro cadastrar_funcionário, que fizemos no Módulo1.

Vamos ajustar este código para que fique mais automático. Em Range(“A14”) e Range(“A15”), substituímos as células A14 e A15 pela variável linha-1 e linha, utilizando o comando Cells. Otimizamos o código também removendo alguns dos Select, ficando o código conforme segue:

Sub cadastrar_funcionario()

nome = InputBox(“Digite o nome do funcionário”)

linha = Range(“A1000000”).End(xlUp).Row + 1

Cells(linha, 1) = nome

Cells(linha – 1, 1).Copy

Cells(linha, 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _

SkipBlanks:=False, Transpose:=False

Range(“B9”).Select

Application.CutCopyMode = False

End Sub

Por último, vamos colocar a coluna A em ordem alfabética. Para isso, vamos gravar mais uma macro, do mesmo modo que fizemos anteriormente (Exibição > Macros > Gravar Macro…). Durante a gravação vamos selecionar a coluna A colocá-la em ordem alfabética (na guia Dados, conforme imagem a seguir). Após isso, paramos a gravação.

Assim, o código que aparecerá no VBA, no Módulo2, será o seguinte:

Sub ordem_alfabetica()

‘

‘ ordem_alfabetica Macro

‘

‘

Columns(“A:A”).Select

ActiveWorkbook.Worksheets(“Resultado Final”).Sort.SortFields.Clear

ActiveWorkbook.Worksheets(“Resultado Final”).Sort.SortFields.Add Key:=Range( _

“A1”), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _

xlSortNormal

With ActiveWorkbook.Worksheets(“Resultado Final”).Sort

.SetRange Range(“A2:A15”)

.Header = xlNo

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

End Sub

Copiamos então este código para o nosso cadastrar_funcionário do Módulo1, como fizemos anteriormente. Após copiado, ajustamos o Range que vai de A2 até A15 para A2 até A100000, para que as próximas linhas adicionadas estejam neste range.

Nosso código finalizado então ficará como segue:

Sub cadastrar_funcionario()

nome = InputBox(“Digite o nome do funcionário”)

linha = Range(“A1000000”).End(xlUp).Row + 1

Cells(linha, 1) = nome

Cells(linha – 1, 1).Copy

Cells(linha, 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _

SkipBlanks:=False, Transpose:=False

Range(“B9”).Select

Application.CutCopyMode = False

Columns(“A:A”).Select

ActiveWorkbook.Worksheets(“Resultado Final”).Sort.SortFields.Clear

ActiveWorkbook.Worksheets(“Resultado Final”).Sort.SortFields.Add Key:=Range( _

“A1”), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _

xlSortNormal

With ActiveWorkbook.Worksheets(“Resultado Final”).Sort

.SetRange Range(“A2:A100000”)

.Header = xlNo

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

End Sub

Assim, os funcionários serão cadastrados com o clique no botão, com a formatação correta e em ordem alfabética!

Usar o InputBox no VBA é uma ótima forma de interagir com o usuário sem complicar o nosso código!

InputBox no Excel, saiba como criar

O VBA Inputbox requer um código específico na parte de macros do Excel. A partir dessa gestão, é possível conectar com a parte das planilhas e criar lógicas que facilitem para qualquer pessoa.

O InputBox em si é uma caixinha em que o usuário vai digitar alguma informação quando clicar em um botão, por exemplo. Pode ser um nome para um conjunto de nomes ou outros exemplos (que exploraremos mais adiante).

Contudo, para gerar essa caixinha, você precisa de um método específico com esse nome InputBox. 

Isso é uma vantagem, por exemplo, porque permite que se configure novas entradas de forma automática, sem que o usuário tenha que colar e configurar tudo a cada adição.

Se a ideia é adicionar um nome para que ele fique em uma posição correta de acordo com a ordem alfabética, o VBA InputBox permite fazer isso com automação. Se fosse na mão, o usuário teria que sair ordenando e mudando células, perdendo bastante tempo. 

A formatação, para citar um bom exemplo, é copiada automaticamente, sem que o usuário nem tenha consciência na hora de usar o VBA InputBox.

Para o usuário, tudo funciona automaticamente, com mecanismos inteligentes e a lógica trabalhando nos bastidores. 

Como armazenar o valor do InputBox nas células do Excel?

No ambiente no VBA, você deve criar um código que pegue o que for digitado dentro da InputBox para colocar em variável. Então, é preciso determinar que essa variável deverá preencher a linha.

Uma variável serve justamente para isto: guardar um valor temporariamente e permitir que ele seja usado posteriormente para alguma outra parte da lógica. 

É importante também buscar no VBA uma forma de selecionar todas as linhas, a partir de uma inicial. 

Uma consideração importante é sempre pegar a próxima linha, automaticamente. Ou seja, pensando em usar o InputBox para adicionar em uma lista de valores, queremos sempre adicionar na última linha e garantir automaticamente a formatação, certo?

Para isso, é preciso sempre pegar a linha que sucede a última linha para então adicionar um novo elemento. Ou seja, a partir da manipulação da variável, o macro vai colocar o valor da VBA InputBox nessa nova linha.

Exemplos de Inputbox

Um bom exemplo de VBA InputBox, que inclusive vamos ver com detalhes na parte prática do conteúdo, é o cadastro de novos colaboradores. 

Nesse caso, você pode ter um botão com a função de cadastrar; então sempre que o usuário clicar, abre a caixa de entrada e digita um novo nome.

Assim, o nome já entra na lista de funcionários com a formatação e a ordenação que já vigora na lista.

Também podemos ter cadastro de novos produtos, em um sistema similar a um controle de vendas. Nesse caso, abre-se a InputBox para entrar o nome do produto e ele é adicionado de acordo com a lógica já existente.

Também podemos ter cadastro de fornecedores em uma planilha para controle logístico. É possível ainda pegar mais informações em uma InputBox mais avançada (como o nome do fornecedor e o tipo de produto).

Quais erros evitar ao usar o InputBox?

É preciso atentar para algumas questões. 

Um dos erros é não configurar o código da macro corretamente. Por exemplo, é preciso atribuir a macro correta ao botão que se quer usar.

Uma das funções necessárias é a gravação de macro. Isso faz com que seja possível pegar uma formatação do Excel e conseguir o código correspondente.

Então, o programador apenas adiciona no seu código a configuração que o Excel fornece. 

Um problema, no entanto, é adicionar o script sem checar primeiro como as informações estão distribuídas. Isso pode gerar erros na lógica básica do sistema. 

Conclusão

Como vimos, o VBA InputBox é uma ótima estratégia para automatizar o controle de inserções em uma planilha. Assim, o usuário não precisa se preocupar com formatações extra e pode simplesmente usar um botão intuitivo para entrar informações.

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador