Anda di halaman 1dari 10

20/06/2015

VBAExcelUsandoListBox

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 aplicaes VBA. A finalidade do VBA automatizar os
recursos que voc utiliza diariamente em suas aplicaes Office.
O Visual Basic for Applications (VBA) uma implementao do
Visual Basic da Microsoft incorporada em todos os programas do
Microsoft Office, bem como em outras aplicaes da Microsoft,
como o Visio, e que foi tambm 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
programao de macros especficas para as aplicaes e pode
ser usado para controlar a quase totalidade dos aspectos da
aplicao anfitri, incluindo a manipulao de aspectos do
interface do usurio tais como menus e barra das ferramentas e
o trabalho com formulrios desenhados pelo usurio ou com
caixas de dilogo.
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 cdigo deste artigo foi testado somente nesta verso e ambiente.
Antes de prosseguir eu sugiro que voc leia os seguintes artigos da seo VBA do site
Macoratti .net
VBA Preparando o ambiente para desenvolvimento com o Excel
Plula de VBA Tipos de Aplicao (VBAExcel)
VBA Criando um projeto no Excel

Carregando uma ListBox com dados de uma planilha Excel


Abra o Microsoft Excel 2007, e clique no cone para abrir o menu de opes.
Selecione a opo Salvar ou Salvar Como;
Na janela Salvar Como, informe o nome do projeto : Excel_ListBox e altere a opo TIpo
para : Pasta de Trabalho Habilitada para Macro do Excel e clique em Salvar:

http://www.macoratti.net/13/10/vba_xlslb.htm

1/10

20/06/2015

VBAExcelUsandoListBox

Este procedimento ir criar uma nova pasta de trabalho (Workbook) em branco contendo
trs 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
aplicao VBA com os dados desta planilha.
http://www.macoratti.net/13/10/vba_xlslb.htm

2/10

20/06/2015

VBAExcelUsandoListBox

A seguir pressione ALT+F11 para abrir o Editor Visual Basic (VBE);

Do VBE voc pode ir para o Excel clicando no boto Excel no topo/esquerdo de sua tela .
Assim usando os dois botes voc pode navegar no VBE para o Excel e, viceversa.
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 formulrio ou UserForm, para isso, clique no menu
Inserir > UserForm;

http://www.macoratti.net/13/10/vba_xlslb.htm

3/10

20/06/2015

VBAExcelUsandoListBox

Podemos agora a partir da Caixa de Ferramentas selecionar um controle e arrastar e soltar


no formulrio.
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 padres dos controles neste exemplo por pura preguia
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:
BackColor = &H00C0E0FF&
Caption = Preenchendo o ListBox

http://www.macoratti.net/13/10/vba_xlslb.htm

4/10

20/06/2015

VBAExcelUsandoListBox

Vamos usar o evento Click do controle CommandButton para que quando o usurio clicar
no boto o ListBox seja preenchido.
Para isso clique duas vezes sobre o controle CommandButton e digite o cdigo 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 cdigo:
ListBox1.ColumnCount = 3
A propriedade ColumnCount especifica o nmero de colunas a exibir em uma caixa de
listagem ou caixa de combinao.
Este cdigo 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 clula A1 at a
clula C14. ("Plan1!A1:C14")
ListBox1.Font.Size = 10
http://www.macoratti.net/13/10/vba_xlslb.htm

5/10

20/06/2015

VBAExcelUsandoListBox

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 cdigo para evitar surpresas. Para fazer
isso podemos usar a instruo On Error.
Se voc no usar uma instruo On Error, qualquer erro em tempo de execuo que
ocorrer ser fatal, isto , ser exibida uma mensagem de erro e a execuo para.
A instruo On Error Ativa uma rotina de tratamento de erro e especifica o local da rotina
dentro de um procedimento; pode ser usada tambm para desativar uma rotina de
tratamento de erro.
Vamos alterar o cdigo usado no evento Click incluindo a instruo 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 funo MsgBox para exibir a
descrio do objeto Err (Erro): Err.Description.
No esquea de sempre definir uma instruo Exit Sub antes da definio da Label para
tratar o erro para sair do bloco de cdigo sem executar o tratamento de erro.
Agora qualquer erro ser capturado e exibido em tempo de execuo.

Definindo uma Macro


O que uma macro?
Uma macro uma coleo de comandos que voc pode aplicar com um nico clique. As
macros podem automatizar quase tudo que seja possvel executar no programa que voc
est usando e at mesmo permitem fazer coisas que talvez voc no soubesse que fossem
possveis.
http://www.macoratti.net/13/10/vba_xlslb.htm

6/10

20/06/2015

VBAExcelUsandoListBox

As macros so programao, mas para uslas, voc no precisa ser um desenvolvedor e


nem mesmo ter conhecimento de programao. 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 srie de aes
ou escrevendo a macro. Vamos escrever uma macro que ser usada para abrir o formulrio
UserForm1.
Para isso vamos incluir um mdulo em nosso projeto a partir do menu Inserir > Mdulo;
Aps essa operao digite o cdigo abaixo no mdulo inserido:
Sub
ExibeFormulario()

UserForm1.Show
End Sub
Este cdigo usa o mtodo Show que exibe um objeto UserForm.
Criamos o cdigo em uma Macro pois vamos abrir o formulrio UserForm1 a partir da
planilha Excel.
Retorne planilha Excel e ativando a guia do desenvolvedor vamos incluir um controle de
formulrio Boto clicando na opo Inserir e selecionando o controle Boto:

Aps selecionar o Boto coloqueo na planilha Excel. Fazendo isso de imediato ser aberta
a janela atribuir macro, exibindo a macro ExibirFormulario que criamos no Mdulo.
Selecione a macro e clique em OK;
Com isso atribumos a macro criada ao boto de comando da planilha:

http://www.macoratti.net/13/10/vba_xlslb.htm

7/10

20/06/2015

VBAExcelUsandoListBox

A seguir selecione o boto e altere o nome de Boto 2 para Preencher Listbox;

Pronto !
Basta clicar no boto de comando para que o formulrio UserForm seja aberto:

http://www.macoratti.net/13/10/vba_xlslb.htm

8/10

20/06/2015

VBAExcelUsandoListBox

Agora clicando no boto Preencher ListBox teremos:

A seguir temos um pequeno resumo das principais propriedades do controle ListBox:


1. RowSource Especifica a origem que fornece uma lista para um ComboBox ou
ListBox.
2. ListCount Especifica a quantidade de itens no ListBox
3. ListIndex Identifica o item atualmente selecionado em um ListBox ou ComboBox.
4. ColumnCount Especifica o nmero de colunas a exibir em uma caixa de listagem ou
caixa de combinao.
5. MultiSelect Indica se o objeto permite vrias selees.
6. List Retorna ou define as entradas de lista de um ListBox ou ComboBox.
7. Selected Retorna ou define o estado de seleo dos itens em um ListBox.
http://www.macoratti.net/13/10/vba_xlslb.htm

9/10

20/06/2015

VBAExcelUsandoListBox

claro que existem outras formas de preencher um controle ListBox, mas isso assunto
para outro artigo.
Pegue a planilha aqui :

Excel_ListBox.zip

Joo 6:44 Ningum pode vir a mim, se o Pai que me enviou no o


trouxer; e eu o ressuscitarei no ltimo dia.
Joo 6:45 Est escrito nos profetas: E sero todos ensinados por Deus.
Portanto todo aquele que do Pai ouviu e aprendeu vem a mim.
Referncias:
Seo VB .NET do Site Macoratti.net
Super DVD .NET A sua porta de entrada na plataforma .NET
Super DVD Vdeo Aulas Vdeo Aula sobre VB .NET, ASP .NET e C#
Seo C# do site Macoratti.net
Seo Visual Basic do site Macoratti .net
Seo VBA do site Macoratti .net
VBA Criando um formulrio de Login (revisitado)
VBA Procurando informaes na Planilha (Mtodo Find)
VBA Cadastro de Clientes com envio de Email no Excel
Jos Carlos Macoratti

http://www.macoratti.net/13/10/vba_xlslb.htm

10/10