vba - excel - usando listbox

10
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 VBA ‐ Preparando o ambiente para desenvolvimento com o Excel Pílula de VBA ‐ Tipos de Aplicação (VBA‐Excel) 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 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:

Upload: iza-monteiro

Post on 14-Sep-2015

94 views

Category:

Documents


4 download

DESCRIPTION

VBA - Excel - Usando ListBox

TRANSCRIPT

  • 20/06/2015 VBAExcelUsandoListBox

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

    VBA Excel Usando o controleListBox

    Neste artigo vamos abordar o controle ListBox do VBA que pode ser usado para exibir umalista de itens sendo muito til para aplicaes VBA. A finalidade do VBA automatizar osrecursos que voc utiliza diariamente em suas aplicaes Office.

    O Visual Basic for Applications (VBA) uma implementao doVisual Basic da Microsoft incorporada em todos os programas doMicrosoft Office, bem como em outras aplicaes da Microsoft,como o Visio, e que foi tambm incorporada pelo menosparcialmente em outros programas de terceiros como oAutoCAD, Mathcad e WordPerfect. Ele substitui e estende ascapacidades de anteriormente existentes linguagens deprogramao de macros especficas para as aplicaes e podeser usado para controlar a quase totalidade dos aspectos daaplicao anfitri, incluindo a manipulao de aspectos dointerface do usurio tais como menus e barra das ferramentas eo trabalho com formulrios desenhados pelo usurio ou comcaixas de dilogo.http://pt.wikipedia.org/wiki/Visual_Basic_for_Applications

    Eu estou usando o Microsoft Office Excel 2007 e sistema operacional Windows 7, eportanto 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 siteMacoratti .net

    VBA Preparando o ambiente para desenvolvimento com o ExcelPlula de VBA Tipos de Aplicao (VBAExcel)VBA Criando um projeto no Excel

    Carregando uma ListBox com dados de uma planilha ExcelAbra 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 TIpopara : Pasta de Trabalho Habilitada para Macro do Excel e clique em Salvar:

  • 20/06/2015 VBAExcelUsandoListBox

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

    Este procedimento ir criar uma nova pasta de trabalho (Workbook) em branco contendotrs planilhas.

    Usando a planilha Plan1 informe alguns dados nesta planilha conforme mostra a figuraabaixo.

    Neste primeiro projeto nosso objetivo ser preencher um controle ListBox em umaaplicao VBA com os dados desta planilha.

  • 20/06/2015 VBAExcelUsandoListBox

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

    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 seguirno cone Visual Basic.

    Vamos incluir no projeto VBA um formulrio ou UserForm, para isso, clique no menuInserir > UserForm;

  • 20/06/2015 VBAExcelUsandoListBox

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

    Podemos agora a partir da Caixa de Ferramentas selecionar um controle e arrastar e soltarno formulrio.

    Vamos selecionar os controles ListBox(name=ListBox1) eCommandButton(name=CommandButton1, Caption=Preencher ListBox ) , um de cadavez, arrastando cada um e soltando no UserForm1.

    Obs: Eu estou usando os nomes padres dos controles neste exemplo por pura preguiade alterar a propriedade name. O correto em um projeto real sempre dar nomessignificativos aos controles. Ex: lbDados, cmdPreencher, etc.

    Vamos dispor os controles conforme o leiaute abaixo usando o mouse para dimensionar oscontroles do tamanho desejado.

    Vamos alterar as seguintes propriedades do UserForm diretamente da janela depropriedades:

    BackColor = &H00C0E0FF&Caption = Preenchendo o ListBox

  • 20/06/2015 VBAExcelUsandoListBox

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

    Vamos usar o evento Click do controle CommandButton para que quando o usurio clicarno boto o ListBox seja preenchido.

    Para isso clique duas vezes sobre o controle CommandButton e digite o cdigo abaixo noevento 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 delistagem ou caixa de combinao.

    Este cdigo atribui o valor 3 propriedade ColumnCount do controle ListBox1. Isso defineque 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 ComboBoxou ListBox.

    Estamos definindo a origem dos dados como sendo a planilha Plan1 da clula A1 at aclula C14. ("Plan1!A1:C14")

    ListBox1.Font.Size = 10

  • 20/06/2015 VBAExcelUsandoListBox

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

    ListBox1.Font.Name = "Verdana"

    As propriedades Font.Size e Font.Name definem o tamanho e a fonte usadas pelocontrole ListBox1.

    Tratando ErrosPodemos incluir um tratamento de erro em nosso cdigo para evitar surpresas. Para fazerisso podemos usar a instruo On Error.

    Se voc no usar uma instruo On Error, qualquer erro em tempo de execuo queocorrer 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 rotinadentro de um procedimento; pode ser usada tambm para desativar uma rotina detratamento de erro.

    Vamos alterar o cdigo usado no evento Click incluindo a instruo On Error GoToTrataErro:

    Private Sub CommandButton1_Click()

    On Error GoTo TrataErro

    ListBox1.ColumnCount = 3ListBox1.RowSource = "Plan1!A1:C14"ListBox1.Font.Size = 10ListBox1.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 adescrio do objeto Err (Erro): Err.Description.

    No esquea de sempre definir uma instruo Exit Sub antes da definio da Label paratratar 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 MacroO que uma macro?

    Uma macro uma coleo de comandos que voc pode aplicar com um nico clique. Asmacros podem automatizar quase tudo que seja possvel executar no programa que vocest usando e at mesmo permitem fazer coisas que talvez voc no soubesse que fossempossveis.

  • 20/06/2015 VBAExcelUsandoListBox

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

    As macros so programao, mas para uslas, voc no precisa ser um desenvolvedor enem mesmo ter conhecimento de programao. A maioria das macros que voc pode criarnos programas do Office escrita em uma linguagem chamada Microsoft Visual Basic forApplications, ou VBA.

    Em muitos programas do Office, voc pode criar uma macro gravando uma srie de aesou escrevendo a macro. Vamos escrever uma macro que ser usada para abrir o formulrioUserForm1.

    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:

    SubExibeFormulario()UserForm1.ShowEnd 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 daplanilha Excel.

    Retorne planilha Excel e ativando a guia do desenvolvedor vamos incluir um controle deformulrio Boto clicando na opo Inserir e selecionando o controle Boto:

    Aps selecionar o Boto coloqueo na planilha Excel. Fazendo isso de imediato ser abertaa 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:

  • 20/06/2015 VBAExcelUsandoListBox

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

    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:

  • 20/06/2015 VBAExcelUsandoListBox

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

    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 ouListBox.

    2. ListCount Especifica a quantidade de itens no ListBox3. 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.

  • 20/06/2015 VBAExcelUsandoListBox

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

    claro que existem outras formas de preencher um controle ListBox, mas isso assuntopara outro artigo.

    Pegue a planilha aqui : Excel_ListBox.zip

    Joo 6:44 Ningum pode vir a mim, se o Pai que me enviou no otrouxer; 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.netSuper DVD .NET A sua porta de entrada na plataforma .NETSuper DVD Vdeo Aulas Vdeo Aula sobre VB .NET, ASP .NET e C#Seo C# do site Macoratti.netSeo Visual Basic do site Macoratti .netSeo VBA do site Macoratti .netVBA 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