VBA - Excel - Usando o controle ListBox
Neste artigo vamos abordar o controle ListBox do VBA que pode ser usado para exibir uma lista de itens sendo muito útil para aplicações VBA. A finalidade do VBA é automatizar os recursos que você utiliza diariamente em suas aplicações Office.
O
Visual Basic for Applications (VBA) é uma implementação do Visual Basic
da Microsoft incorporada em todos os programas do Microsoft Office, bem como
em outras aplicações da Microsoft, como o Visio, e que foi também
incorporada pelo menos parcialmente em outros programas de terceiros como o
AutoCAD, Mathcad e WordPerfect. Ele substitui e estende as capacidades de
anteriormente existentes linguagens de programação de macros específicas
para as aplicações e pode ser usado para controlar a quase totalidade dos
aspectos da aplicação anfitriã, incluindo a manipulação de aspectos do
interface do usuário tais como menus e barra das ferramentas e o trabalho
com formulários desenhados pelo usuário ou com caixas de diálogo. http://pt.wikipedia.org/wiki/Visual_Basic_for_Applications |
Eu estou usando o Microsoft Office Excel 2007 e sistema operacional Windows 7, e portanto o código deste artigo foi testado somente nesta versão e ambiente.
Antes de prosseguir eu sugiro que você leia os seguintes artigos da seção VBA do site Macoratti .net
Carregando uma ListBox com dados de uma planilha Excel
Abra o Microsoft Excel 2007, e clique no ícone para abrir o menu de opções.
Selecione a opção Salvar ou Salvar Como;
Na janela Salvar Como, informe o nome do projeto : Excel_ListBox e altere a opção TIpo para : Pasta de Trabalho Habilitada para Macro do Excel e clique em Salvar:
Este procedimento irá criar uma nova pasta de trabalho (Workbook) em branco contendo três planilhas.
Usando a planilha Plan1 informe alguns dados nesta planilha conforme mostra a figura abaixo.
Neste primeiro projeto nosso objetivo será preencher um controle ListBox em uma aplicação VBA com os dados desta planilha.
A seguir pressione ALT+F11 para abrir o Editor Visual Basic (VBE);
Do VBE você pode ir para o Excel clicando no botão Excel no topo/esquerdo de sua tela . Assim usando os dois botões você pode navegar no VBE para o Excel e, vice-versa.
Nota: Você pode abrir o Editor Visual Basic clicando no menu Desenvolvedor e a seguir no ícone Visual Basic.
Vamos incluir no projeto VBA um formulário ou UserForm, para isso, clique no menu Inserir -> UserForm;
Podemos agora a partir da Caixa de Ferramentas selecionar um controle e arrastar e soltar no formulário.
Vamos selecionar os controles ListBox(name=ListBox1) e CommandButton(name=CommandButton1, Caption=Preencher ListBox ) , um de cada vez, arrastando cada um e soltando no UserForm1.
Obs: Eu estou usando os nomes padrões dos controles neste exemplo por pura preguiça de alterar a propriedade name. O correto em um projeto real é sempre dar nomes significativos aos controles. Ex: lbDados, cmdPreencher, etc.
Vamos dispor os controles conforme o leiaute abaixo usando o mouse para dimensionar os controles do tamanho desejado.
Vamos alterar as seguintes propriedades do UserForm diretamente da janela de propriedades:
Vamos usar o evento Click do controle CommandButton para que quando o usuário clicar no botão o ListBox seja preenchido.
Para isso clique duas vezes sobre o controle CommandButton e digite o código abaixo no evento Click:
Private Sub CommandButton1_Click() ListBox1.ColumnCount = 3 ListBox1.RowSource = "Plan1!A1:C14" ListBox1.Font.Size = 10 ListBox1.Font.Name = "Verdana" End Sub |
Vamos entender o código:
ListBox1.ColumnCount = 3
A propriedade ColumnCount especifica o número de colunas a exibir em uma caixa de listagem ou caixa de combinação.
Este código atribui o valor 3 à propriedade ColumnCount do controle ListBox1. Isso define que vamos exibir 3 colunas pois vamos obter os dados da planilha que possui 3 colunas.
ListBox1.RowSource = "Plan1!A1:C14"
A propriedade RowSource especifica a origem que fornece uma lista para um ComboBox ou ListBox.
Estamos definindo a origem dos dados como sendo a planilha Plan1 da célula A1 até a célula C14. ("Plan1!A1:C14")
ListBox1.Font.Size = 10
ListBox1.Font.Name = "Verdana"
As propriedades Font.Size e Font.Name definem o tamanho e a fonte usadas pelo controle ListBox1.
Tratando Erros
Podemos incluir um tratamento de erro em nosso código para evitar surpresas. Para fazer isso podemos usar a instrução On Error.
Se você não usar uma instrução On Error, qualquer erro em tempo de execução que ocorrer será fatal, isto é, será exibida uma mensagem de erro e a execução para.
A instrução On Error Ativa uma rotina de tratamento de erro e especifica o local da rotina dentro de um procedimento; pode ser usada também para desativar uma rotina de tratamento de erro.
Vamos alterar o código usado no evento Click incluindo a instrução On Error GoTo TrataErro:
Private Sub CommandButton1_Click() On Error GoTo TrataErro ListBox1.ColumnCount = 3 ListBox1.RowSource = "Plan1!A1:C14" ListBox1.Font.Size = 10 ListBox1.Font.Name = "Verdana" Exit Sub TrataErro: MsgBox "Erro " & Err.Description, vbCritical, "Erro" End Sub |
Note que definimos uma Label TrataErro onde usamos a função MsgBox para exibir a descrição do objeto Err (Erro): Err.Description.
Não esqueça de sempre definir uma instrução Exit Sub antes da definição da Label para tratar o erro para sair do bloco de código sem executar o tratamento de erro.
Agora qualquer erro será capturado e exibido em tempo de execução.
Definindo uma Macro
Uma macro é uma coleção de comandos que você pode aplicar com um único clique. As macros podem automatizar quase tudo que seja possível executar no programa que você está usando e até mesmo permitem fazer coisas que talvez você não soubesse que fossem possíveis.
As macros são programação, mas para usá-las, você não precisa ser um desenvolvedor e nem mesmo ter conhecimento de programação. A maioria das macros que você pode criar nos programas do Office é escrita em uma linguagem chamada Microsoft Visual Basic for Applications, ou VBA.
Em muitos programas do Office, você pode criar uma macro gravando uma série de ações ou escrevendo a macro. Vamos escrever uma macro que será usada para abrir o formulário UserForm1.
Para isso vamos incluir um módulo em nosso projeto a partir do menu Inserir -> Módulo;
Após essa operação digite o código abaixo no módulo inserido:
Sub
ExibeFormulario() UserForm1.Show End Sub |
Este código usa o método Show que exibe um objeto UserForm.
Criamos o código em uma Macro pois vamos abrir o formulário UserForm1 a partir da planilha Excel.
Retorne à planilha Excel e ativando a guia do desenvolvedor vamos incluir um controle de formulário Botão clicando na opção Inserir e selecionando o controle Botão:
Após selecionar o Botão coloque-o na planilha Excel. Fazendo isso de imediato será aberta a janela atribuir macro, exibindo a macro ExibirFormulario que criamos no Módulo.
Selecione a macro e clique em OK;
Com isso atribuímos a macro criada ao botão de comando da planilha:
A seguir selecione o botão e altere o nome de Botão 2 para Preencher Listbox;
Pronto !
Basta clicar no botão de comando para que o formulário UserForm seja aberto:
Agora clicando no botão Preencher ListBox teremos:
A seguir temos um pequeno resumo das principais propriedades do controle ListBox:
É claro que existem outras formas de preencher um controle ListBox, mas isso é assunto para outro artigo.
Pegue a planilha aqui : Excel_ListBox.zip
João 6:44
Ninguém pode vir a mim, se o Pai que me enviou não o trouxer; e eu o ressuscitarei no último dia.João 6:45
Está escrito nos profetas: E serão todos ensinados por Deus. Portanto todo aquele que do Pai ouviu e aprendeu vem a mim.Referências: