listbox e combobox excel

22
Adicione uma caixa de listagem (controle de formulário) 1. Se o desenvolvedor guia não estiver disponível, exiba-a. Exibir o Developer guia 2. No Developer guia, no Controls grupo, clique em Inserir e, em Controles de Formulário , clique em caixa de lista . 3. Clique no local da planilha onde deseja que o canto superior esquerdo da caixa de listagem para aparecer. 4. No Developer guia, no Controls grupo, clique em Propriedades . DICA Você também pode clique com o botão de controle, e clique em Formatar Controle . Para especificar as propriedades do controle, faça o seguinte: 1. Na gama de entrada , insira uma referência de célula a um intervalo que contém os valores a serem exibidos na caixa de listagem. 2. No link célula , insira uma referência de célula que contém a seleção caixa de listagem. A célula vinculada retornará o número do item selecionado na caixa de listagem.O primeiro item no intervalo retorna um valor de 1, o segundo item no intervalo retorna um valor de 2, e assim por diante. Use este número em uma fórmula para retornar o item real do intervalo de entrada. Por exemplo, uma forma de preferência de sobremesa tem uma caixa de listagem que está vinculado a célula C1, o intervalo de entrada para a lista é D1: D5 e os itens da escala são: "Sorvete" (D1), "Bolo" (D2 ), "Licor" (D3), "Candy" (D4) e "Chocolate" (D5). A fórmula a seguir, entrou na célula B1, retorna o valor "Licor" do intervalo D1: D5 se o valor de C1 for 3, com base na seleção atual na caixa de lista. = INDEX (D1: D5 e C1) 3. De acordo com o tipo de seleção , especifique quantos itens podem ser selecionados na caixa de lista fazendo um dos seguintes procedimentos: Para criar uma caixa de listagem de seleção única, clique único . Para criar uma caixa de listagem de seleção múltipla, clique Multi. Para criar uma caixa de lista de selecção estendida, clique emExpandir . OBSERVAÇÃO Se você definir o tipo de seleção para Multi ou estender , a célula que está especificado no link Cell retorna uma caixa de valor igual a 0 e é ignorado. O Multi e estender tipos de seleção exigem o uso do Microsoft

Upload: luiz-marques

Post on 14-Nov-2015

180 views

Category:

Documents


65 download

DESCRIPTION

Listbox e Combobox Excel

TRANSCRIPT

Parte superior do formulrioAdicione uma caixa de listagem (controle de formulrio)1. Se odesenvolvedorguia no estiver disponvel, exiba-a.Exibir oDeveloperguia2. NoDeveloperguia, noControlsgrupo, clique emInserire, emControles de Formulrio, clique emcaixa de lista.

3. Clique no local da planilha onde deseja que o canto superior esquerdo da caixa de listagem para aparecer.4. NoDeveloperguia, noControlsgrupo, clique emPropriedades.DICAVoc tambm pode clique com o boto de controle, e clique emFormatar Controle.Para especificar as propriedades do controle, faa o seguinte:1. Nagama de entrada, insira uma referncia de clula a um intervalo que contm os valores a serem exibidos na caixa de listagem.2. Nolink clula, insira uma referncia de clula que contm a seleo caixa de listagem.A clula vinculada retornar o nmero do item selecionado na caixa de listagem.O primeiro item no intervalo retorna um valor de 1, o segundo item no intervalo retorna um valor de 2, e assim por diante.Use este nmero em uma frmula para retornar o item real do intervalo de entrada.Por exemplo, uma forma de preferncia de sobremesa tem uma caixa de listagem que est vinculado a clula C1, o intervalo de entrada para a lista D1: D5 e os itens da escala so: "Sorvete" (D1), "Bolo" (D2 ), "Licor" (D3), "Candy" (D4) e "Chocolate" (D5).A frmula a seguir, entrou na clula B1, retorna o valor "Licor" do intervalo D1: D5 se o valor de C1 for 3, com base na seleo atual na caixa de lista.= INDEX (D1: D5 e C1)3. De acordo como tipo de seleo, especifique quantos itens podem ser selecionados na caixa de lista fazendo um dos seguintes procedimentos: Para criar uma caixa de listagem de seleo nica, cliquenico. Para criar uma caixa de listagem de seleo mltipla, cliqueMulti. Para criar uma caixa de lista de seleco estendida, clique emExpandir.OBSERVAOSe voc definir o tipo de seleo paraMultiouestender, a clula que est especificado nolink Cellretorna uma caixa de valor igual a 0 e ignorado.OMultieestendertipos de seleo exigem o uso do Microsoft Visual Basic for Applications (VBA).Nestes casos, considere usar o controle ActiveX caixa de listagem.TOPO DA PGINAAdicionar uma caixa de listagem (controle ActiveX)1. Se odesenvolvedorguia no estiver disponvel, exiba-a.Exibir oDeveloperguia2. NoDeveloperguia, noControlsgrupo, clique emInserire, emControles ActiveX, clique emCaixa de Listagem.

3. Clique no local da planilha onde deseja que o canto superior esquerdo da caixa de listagem para aparecer.4. Para editar o controlo ActiveX, certifique-se que voc est no modo de design.NoDeveloperguia, noControlsgrupo, ativaro modo de design.5. Para especificar as propriedades do controle, noDeveloperguia, noscontroles degrupo, clique emPropriedades.DICAVoc tambm pode clique com o boto de controle, e clique emPropriedades.Aspropriedades decaixa de dilogo aparece.Para obter informaes detalhadas sobre cada propriedade, selecione a propriedade e pressione F1 para exibir umaajuda do Visual Basictpico.Voc tambm pode digitar o nome da propriedade no Visual Basic AjudaPesquisa decaixa.A seco seguinte resume as propriedades que esto disponveis.RESUMO DAS PROPRIEDADES POR CATEGORIAS FUNCIONAISSE VOC QUISER ESPECIFICARUSE ESTA PROPRIEDADE

Geral:

Se o controle carregado quando o livro aberto.(Ignorado para controles ActiveX.)AutoLoad(Excel)

Se o controle pode receber o foco e responder a eventos gerados pelo usurio.Enabled(Formulrio)

Se o controle pode ser editado.Locked(Formulrio)

O nome do controle.Nome(Formulrio)

A forma como o controle anexado s clulas abaixo dele (sem movimento, flutuante, mas no dimensionar ou mover e tamanho).Colocao(Excel)

Se o controle pode ser impresso.PrintObject(Excel)

Se o controle est visvel ou oculto.Visvel(Formulrio)

Texto:

Os atributos de fonte (negrito, itlico, tamanho, tachado, sublinhado e peso).Negrito,itlico,tamanho,tachado,sublinhado,Peso(Formulrio)

O modo padro de tempo de execuo do Input Method Editor (IME).IMEMode(Formulrio)

Se o tamanho do controle ajusta para mostrar as linhas total ou parcial do texto.IntegralHeight(Formulrio)

Se vrias selees de itens so permitidos.MultiSelect(Formulrio)

O texto no controle.Texto(Forma)

Como o texto alinhado no controle (esquerda, centro ou direita).TextAlign(Formulrio)

Dados e Encadernao:

A faixa que est vinculado ao valor do controle.LinkedCell(Excel)

O contedo ou estado do controle.Valor(Formulrio)

Tamanho e Posio:

A altura ou largura em pontos.Altura,largura(Formulrio)

A distncia entre o controle ea borda esquerda ou superior da planilha.Left,Top(Formulrio)

Formatao:

A cor de fundo.BackColor(Formulrio)

A cor da fronteira.BorderColor(Formulrio)

O tipo de borda (nenhuma ou uma linha).BorderStyle(Formulrio)

A cor de primeiro plano.ForeColor(Formulrio)

Se o controle tem uma sombra.Shadow(Excel)

O aspecto visual da borda (plana, levantou, afundado, gravado, ou coliso).EfeitoEspecial(Formulrio)

Teclado e Mouse:

Um cone do mouse personalizado.MouseIcon(Formulrio)

O tipo de ponteiro que exibido quando o usurio posiciona o mouse sobre um objeto especfico (por exemplo, padro, seta ou viga "I").MousePointer(Formulrio)

Especfico para caixa de listagem:

A fonte de dados para vrias colunas.BoundColumn(Formulrio)

O nmero de colunas para mostrar.ColumnCount(Formulrio)

Uma nica linha como um cabealho de coluna.ColumnHeads(Formulrio)

A largura de cada coluna.LargurasDasColunas(Formulrio)

A faixa que usada para preencher a lista.ListFillRange(Excel)

O estilo da lista (simples, com botes de opo, ou com caixas de seleo).ListStyle(Formulrio)

Como o controle pesquisa sua lista enquanto o usurio digita (primeira letra, entrada completa ou nenhum)MatchEntry(Formulrio)

A coluna para armazenar notextode propriedade quando o usurio seleciona uma linha.TextColumn(Formulrio)

O item que aparece na posio mais alta na lista.TopIndex(Formulrio)

NOTAS Para criar uma caixa de listagem com seleo mltipla ou de seleco estendida habilitado, use aMultiSelectpropriedade.Neste caso, oLinkedCellpropriedade retorna um# N / Avalor.Voc deve usar o cdigo do VBA para o processo de vrias selees. Para criar uma coluna de lista da caixa-dois com cabealhos de coluna, definaColumnCounta2,columnHeadsparaTrue,LargurasDasColunaspara a largura desejada para cada coluna (por exemplo,72pt, 72pt),ListFillRangepara o intervalo que usado para preencher o lista (por exemplo, B2: C6),BoundColumnpara qualquerumoudoispara indicar qual o valor da coluna para salvar, eLinkedCellpara um endereo de clula que contm o valor selecionado.Por padro, o rtulo da coluna usado como cabealho de coluna (por exemplo, a coluna B e da coluna C).Para usar o seu prprio cabealho da coluna, coloque-os imediatamente acima do primeiro valor especificado emListFillRange(por exemplo, B1 e C1) antes de fechar oPropriedadescaixa de dilogo.Finalmente, redimensionar a caixa de lista para exibir ambas as colunas. Para criar uma caixa de listagem que exibe um valor na caixa de lista, mas poupa outro valor na clula vinculada, crie uma coluna lista da caixa-dois, e depois esconder uma das colunas, definindo suaLargurasDasColunasvalor para0.Por exemplo, voc pode configurar uma coluna da lista de caixa dois que contm os nomes dos feriados em uma coluna e as datas associadas com as frias em uma segunda coluna.Para apresentar os nomes de frias para os usurios, especifique a primeira coluna como oTextColumn.Para armazenar as datas dos feriados, especifique a segunda coluna como aBoundColumn.Para ocultar as datas dos feriados, defina aLargurasDasColunaspropriedade da segunda coluna a0.TOPO DA PGINAAdicione uma caixa de combinao (controle de formulrio)1. Se odesenvolvedorguia no estiver disponvel, exiba-a.Exibir oDeveloperguia2. NoDeveloperguia, noControlsgrupo, clique emInserire, emControles de Formulrio, clique emcaixa de combinao.

3. Clique no local da planilha onde deseja que o canto superior esquerdo da caixa de combinao para aparecer.A seta drop-down exibida com a caixa de texto recolhido.4. Para exibir a caixa de texto, arraste o dimensionamento de centro-esquerda para direita.5. NoDeveloperguia, noControlsgrupo, clique emPropriedades.DICAVoc tambm pode clique com o boto de controle, e clique emFormatar Controle.Para especificar as propriedades do controle, faa o seguinte:1. Nagama de entrada, insira uma referncia de clula a um intervalo que contm os valores a serem exibidos na lista drop-down da caixa de combinao.2. Nolink clula, insira uma referncia de clula que contm a seleo na lista drop-down da caixa de combinao.A clula vinculada retornar o nmero do item selecionado na lista suspensa da caixa de combinao.O primeiro item no intervalo retorna um valor de 1, o segundo item no intervalo retorna um valor de 2, e assim por diante.Use este nmero em uma frmula para retornar o item real do intervalo de entrada.Por exemplo, uma forma de preferncia de sobremesa tem uma caixa de combinao ligada clula C1, o intervalo de entrada para a lista D1: D5 e os itens da escala so: "Sorvete" (D1), "Bolo" (D2), "Licor" (D3), "Candy" (D4) e "Chocolate" (D5).A frmula a seguir, entrou na clula B1, retorna o valor "Licor" do intervalo D1: D5 se o valor de C1 for 3, com base na seleo atual na caixa de combinao.= INDEX (D1: D5 e C1)

OBSERVAO:Se voc deseja criar uma caixa de combinao que permite ao usurio editar o texto na caixa de texto, considere usar o ActiveXCaixa de Combinaode controle.3. Naslinhas de Drop-down, digite o nmero de linhas a serem exibidas na lista drop-down da caixa de combinao.Se o valor : 0, ele ignorado e tratado como um. Menos do que o nmero de itens no intervalo especificado nointervalo de entradade caixa, uma barra de rolagem exibida. Igual ou maior que o nmero de itens no intervalo especificado nointervalo de entradade caixa, sem barra de rolagem exibida.TOPO DA PGINAAdicionar uma caixa de combinao (controle ActiveX)1. Se odesenvolvedorguia no estiver disponvel, exiba-a.Exibir oDeveloperguia2. NoDeveloperguia, noControlsgrupo, clique emInserire, emControles ActiveX, clique emCaixa de Combinao.

3. Clique no local da planilha onde deseja que o canto superior esquerdo da caixa de combinao para aparecer.4. Para editar o controlo ActiveX, certifique-se que voc est no modo de design.NoDeveloperguia, noControlsgrupo, ativaro modo de design.5. Para especificar as propriedades do controle, noDeveloperguia, noscontroles degrupo, clique emPropriedades.DICAVoc tambm pode clique com o boto de controle, e clique emPropriedades.Aspropriedades decaixa de dilogo aparece.Para obter informaes detalhadas sobre cada propriedade, selecione a propriedade e pressione F1 para exibir umaajuda do Visual Basictpico.Voc tambm pode digitar o nome da propriedade no Visual Basic AjudaPesquisa decaixa.A seco seguinte resume as propriedades que esto disponveis.RESUMO DAS PROPRIEDADES POR CATEGORIAS FUNCIONAISSE VOC QUISER ESPECIFICARUSE ESTA PROPRIEDADE

Geral:

Se o controle carregado quando o livro aberto.(Ignorado para controles ActiveX.)AutoLoad(Excel)

Se o controle pode receber o foco e responder a eventos gerados pelo usurio.Enabled(Formulrio)

Se o controle pode ser editado.Locked(Formulrio)

O nome do controle.Nome(Formulrio)

A forma como o controle anexado s clulas abaixo dele (sem movimento, flutuante, mas no dimensionar ou mover e tamanho).Colocao(Excel)

Se o controle pode ser impresso.PrintObject(Excel)

Se o controle est visvel ou oculto.Visvel(Formulrio)

Texto:

Se uma palavra ou um caractere a unidade bsica usada para estender uma seleo.AutoWordSelect(Formulrio)

Os atributos de fonte (negrito, itlico, tamanho, tachado, sublinhado e peso).Negrito,itlico,tamanho,tachado,sublinhado,Peso(Formulrio)

Se o texto selecionado permanece realado quando o controle no tem o foco.HideSelection(Formulrio)

O modo padro de tempo de execuo do Input Method Editor (IME).IMEMode(Formulrio)

O nmero mximo de caracteres que um usurio pode entrar.MaxLength(Formulrio)

Se o usurio pode selecionar uma linha de texto clicando esquerda do texto.SelectionMargin(Formulrio)

O texto no controle.Texto(Forma)

Como o texto alinhado no controle (esquerda, centro ou direita).TextAlign(Formulrio)

Dados e vinculativo:

A faixa que est vinculado ao valor do controle.LinkedCell(Excel)

O contedo ou estado do controle.Valor(Formulrio)

Tamanho e posio:

Se o tamanho do controle ajusta automaticamente para mostrar todo o contedo.AutoSize(Formulrio)

A altura ou largura em pontos.Altura,largura(Formulrio)

A distncia entre o controle ea borda esquerda ou superior da planilha.Left,Top(Formulrio)

Formatao:

A cor de fundo.BackColor(Formulrio)

O estilo de fundo (transparente ou opaco).BackStyle(Formulrio)

A cor da fronteira.BorderColor(Formulrio)

O tipo de borda (nenhuma ou uma linha).BorderStyle(Formulrio)

A cor de primeiro plano.ForeColor(Formulrio)

Se o controle tem uma sombra.Shadow(Excel)

O aspecto visual da borda (plana, levantou, afundado, gravado, ou coliso).EfeitoEspecial(Formulrio)

Teclado e mouse:

Se uma ao de tabulao automtica ocorre depois que um usurio digitou o nmero mximo de caracteres para o controle.AutoTab(Formulrio)

Quer arrastar-e-soltar est ativado.DragBehavior(Formulrio)

O comportamento de seleo ao entrar no controle (selecionar tudo ou no mudar).EnterFieldBehavior(Formulrio)

Um cone do mouse personalizado.MouseIcon(Formulrio)

O tipo de ponteiro que exibido quando o usurio posiciona o mouse sobre um objeto especfico (por exemplo, padro, seta ou viga "I").MousePointer(Formulrio)

Especfica para caixa de combinao:

A fonte de dados para vrias colunas.BoundColumn(Formulrio)

O nmero de colunas a serem exibidas.ColumnCount(Formulrio)

Uma nica linha como um cabealho de coluna.ColumnHeads(Formulrio)

A largura de cada coluna.LargurasDasColunas(Formulrio)

O smbolo que exibido no boto drop (seta para baixo, normal, de reticncias, ou sublinhado).DropButtonStyle(Formulrio)

A faixa que usada para preencher a lista.ListFillRange(Excel)

O nmero mximo de linhas a serem exibidas na lista.ListRows(Formulrio)

O estilo da lista (simples, com botes de opo, ou com caixas de seleo).ListStyle(Formulrio)

A largura da lista.ListWidth(Formulrio)

Como o controle pesquisa sua lista enquanto o usurio digita (primeira letra, entrada completa ou nenhum)MatchEntry(Formulrio)

Se um valor inserido como texto deve corresponder a uma entrada na lista existente.MatchRequired(Formulrio)

Quando mostrar o boto drop (nunca, com foco, ou sempre).ShowDropButtonWhen(Formulrio)

Como o usurio escolhe ou define o valor (drop-down list ou combo drop-down).Estilo(Formulrio)

A coluna para armazenar notextode propriedade quando o usurio seleciona uma linha.TextColumn(Formulrio)

O item que aparece na posio mais alta na lista.TopIndex(Formulrio)

NOTAS Para criar uma coluna na caixa de combinao com dois cabealhos de coluna, definaColumnCounta2,columnHeadsparaTrue,LargurasDasColunaspara a largura desejada para cada coluna (por exemplo,72pt, 72pt),ListFillRangepara o intervalo que usado para preencher o lista (por exemplo, B1: C6),BoundColumnpara qualquerumoudoispara indicar qual o valor da coluna para salvar,TextColumnpara a coluna de dados que voc deseja exibir na caixa de texto na seo da caixa de combinao (que pode ser o mesmo ou diferentes doBoundColumnvalor), eLinkedCellpara um endereo de clula que conter o valor selecionado.Por padro, o rtulo da coluna usado como cabealho de coluna (por exemplo, a coluna B e da coluna C).Para usar o seu prprio cabealho da coluna, coloque-os imediatamente acima do primeiro valor especificado emListFillRange(por exemplo, B1 e C1) antes de fechar oPropriedadescaixa de dilogo.Finalmente, redimensionar a caixa de combinao para exibir ambas as colunas. Para criar uma caixa de combinao que exibe um valor na caixa de combinao, mas salva outro na clula vinculada, crie uma coluna de combinao caixa dois, e depois esconder uma das colunas, definindo suaLargurasDasColunasvalor para0.Por exemplo, voc pode criar uma coluna de combinao caixa dois que contm os nomes dos feriados em uma coluna e as datas associadas para as frias em uma segunda coluna.Para apresentar os nomes de frias para os usurios, especifique a primeira coluna como oTextColumn.Para armazenar as datas dos feriados, especifique a segunda coluna como aBoundColumn.Para ocultar as datas dos feriados, defina aLargurasDasColunaspropriedade da segunda coluna a0. Para criar uma caixa de combinao que no permite que o usurio inserir novos valores, definaStylepara2.Para criar uma caixa de combinao que permite ao usurio inserir novos valores que no so encontrados na lista, definaestilodeum, que o padro.Neste caso, voc deve escrever cdigo VBA se voc quiser atualizar dinamicamente os valores da lista.TOPO DA PGINASer que este artigo ajud-lo?

Sim

No

No o que eu estava procurando

anncioVeja tambm Adicionar uma caixa de grupo ou controle de quadro a uma planilha Adicionar ou editar uma macro para um controle em uma planilha Adicionar ou registrar um controle ActiveX Editar texto em um controle em uma planilha Resumo dos formulrios, controles de formulrios e controles ActiveX em uma planilha Redimensionar ou formatar um controle em uma planilha O que posso fazer se eu no conseguir ver ou editar uma clula porque um controle ou objeto que cobre? Veja maisParte inferior do formulrioFale Conosco|Enviar Referncia|Legal|Marcas comerciais|Privacidade|Acessibilidade 2010 Microsoft Corporation.Todos os direitos reservados.

Preenchendo umListboxou umComboBoxComboBoxeListBoxso caixas de listagem que contm uma srie de dados que podem ser selecionados atravs de um click. Duas coisas devem ser consideradas ao se utilizar esse tipo de objeto: Deve existir em algum lugar, a lista dos itens que ir popular o objeto, e... Os dados devem estar presentes e disponveis ao usurio assim que o formulrio for exibido, sem a necessidade de clicarmos em coisa alguma;

No Excel, a forma mais prtica de se definir a lista dos dados consiste em se deixar uma das planilhas especificamente para conte-los, definindo as clulas ou grupos de clulas que devem ser acessadas para obt-los. Com isso a manuteno tambm fica bastante simples, basta acessar a planilha e inserir, deletar ou alterar os dados.Acesse a planilha Plan2 e digite a seqncia de dados a seguir a partir da clula A1: UsrFrm1:Nomes dos Usuarios Joo dos Santos Jos Incio Francelino Gonalvez Jocimar da Cruz Ana Carina Bruna da Silva Dbora dos Santos Camila Dias

Osegundo item, deixar os dados disponveis desde a abertura do formulrio, facilmente obtido se declararmos o cdigo para populao do objeto no evento de abertura do prprio formulrio.Vamos entender isso um pouco melhor. Quando um formulrio qualquer, em Visual Basic, mostrado na tela uma parte do programa necessria para apresentar o formulrio processada instante antes do mesmo ser exibido. Por exemplo, se quisermos que a cor, o tamanho, o nome ou qualquer outra caracterstica seja ajustado ao exibi-lo, temos que declarar isso no evento Activate. Do mesmo modo, se quisermos que objetos do tipoListBoxouComboBoxestejam preenchidos assim que o formulrio for exibido, temos que declarar o cdigo que ir preenche-los nesse mesmo evento. Vamos ver como fazer:D um duplo clique sobre uma rea vazia do formulrio. Ver que ser exibido o seguinte cdigo:Private Sub UserForm_Click()End SubJ vimos que o eventoClickfoi til ao definirmos o cdigo para o botoEncerrar, no entanto, no presente caso queremos inserir o cdigo para preencher oComboBox cbx_Usuriosantes que o formulrio seja exibido. Tambm vimos que temos que declarar esse cdigo no eventoActivate, portanto, clique na caixa de listagem no canto superior direito do painel de codificao e selecione a palavraActivate, como detalha a figura a seguir:

A sintaxeAinstruo do Visual Basic que insere um item em umComboBoxouListBoxAddItem. A sintaxe deste comando :Objeto.Additem descrio do itemNosso objeto ocbx_Usuarios, portanto para inserirmos o nome do Joo dos Santos temos que colocar na sintaxe:cbx_Usuarios.Additem Joo dos SantosNote que o nome veio entre aspas. Sempre que utilizarmos sentenas em atribuies elas devem vir entre aspas. Uma forma de memorizar isso: dados alfanumricos devem ser fornecidos entre aspas. Esse tipo de dado conhecido em Visual Basic comoString, ou seja, uma cadeia de caracteres.Para inserirmos os oito nomes que temos cadastrados em nossa planilha existem ao menos dois mtodos. O mais imediato a atribuio direta de todos os nomes, sendo assim, teramos que repetir a sentena acima para cada um dos itens doComboBox: cbx_Usuarios.Additem Joo dos Santos cbx_Usuarios.Additem Jos Incio cbx_Usuarios.Additem Francelino Gonalvez cbx_Usuarios.Additem Jocimar da Cruz cbx_Usuarios.Additem Ana Carina cbx_Usuarios.Additem Bruna da Silva cbx_Usuarios.Additem Dbora dos Santos cbx_Usuarios.Additem Camila Dias

Esse mtodo apresenta algumas desvantagens: trabalhoso, repetitivo e montono, alm disso... Se quisermos inserir novos nomes temos que alterar o cdigo do programa.

Felizmente existe outra maneira muito mais interessante para podermos popular oComboBoxutilizando uma estrutura lgica que ir repetir sempre o mesmo comandoAdditem. Uma segunda estrutura lgica ir indicar que os nomes existentes na planilha terminaram, encerrando a repetio dos comandos. Antes de fazermos isso vamos conhecer como essas estruturas lgicas funcionam.

A estrutura lgica Do While

As estruturas lgicas permitem que se dintelignciaaos programas. atravs dessas estruturas que decidimos entre vrias opes, escolhemos um caminho, emitimos mensagens e claro, executamos comandos repetitivos.A estruturaDo Whilese presta exatamente a essa ltima tarefa.A sua sintaxe :

Do While CONDIO LGICA cdigo...Loop

Enquanto a condio lgica for satisfeita, tudo o que estiver entre oDo Whilee oLoopser repetido. Podemos escrever o cdigo da seguinte forma:

A estrutura lgica ser denominada Preencher, que pode receber o valor de True (verdadeiro) ou False (falso)Preencher = TrueSelecionar a planilha onde esto os itens que iro popular o ComboBox:Sheets(Plan2).selectSelecionar a clula inicial da listagem dos itens que iro popular o ComboBox.Observe que selecionamos a clula que contm o cabealho e no o primeiro nomeRange(A1).selectIniciar a execuo da estrutura lgicaDo While Preencher = trueSelecionar a clula que est na linha imediatamente inferiorActiveCell.offset(1,0) cbx_Usuarios.AddItemActiveCell.valueLoop

Obs: as linhas iniciadas com um apstrofe (cor verde) so linhas de comentrio. O Visual Basic ignora essas linhas durante a execuo do programa e elas auxiliam na compreenso da lgica.

Se tentarmos executar o cdigo do jeito que est, o programa entrar no que chamamos delao perptuo, ou seja, o cdigo ir se repetir indefinidamente e o programa ficar travado. Caso isso ocorra, segure a teclaCTRLpressionada e aperte a teclaBREAK. Com isso a execuo ser interrompida.

Olao perptuoocorre porque aps incluir o valor da clula nocbx_Usuarios, o Excel avana uma linha e repete o comando e vai fazendo isso eternamente porque a condioPreencher = Trueno alterada em nenhum momento. Para evitarmos que isso acontea, temos que avaliar o contedo da clula ativa. Se o contedo for vazio, ou seja, sem contedo, temos que alterar a condio lgica deTrueparaFalse, fazendo com que o lao seja encerrado.

Private Sub UserForm_Activate()' A estrutura lgica ser denominada Preencher, que pode receber o valor de True (verdadeiro) ou False (falso)Preencher = True'Selecionamos a planilha onde esto os dados a popularem o combobox:Sheets("Plan2").Select'Selecinamos a clula onde est o ncio dos dados. 'Note que selecionamos o cabealho da lista e no o primeiro nomeRange("A1").Select'Iniciamos a execuo da estrutura lgicaDo While Preencher = True'Seleciona a clula que est na linha imediatamente inferiorActiveCell.Offset(1, 0).Select'Testa o valor da clula e decide se o lao deve ou no continuarIf ActiveCell.Value = vbNullString Then'Se a clula estiver vazia, altera a condio lgicaPreencher = FalseELSE'se no estiver, acrescenta o itemcbx_Usuarios.AddItem ActiveCell.ValueEnd IfLoopEnd SubVamos testar nosso programa e fazer alguns comentrios teis. Clique na planilhaPlan2e depois selecione:Ferramentas> Macro> Editor do Visual Basic. Dimensione a janela do editor de modo a poder ver a planilha ao fundo, para acompanhar a execuo do programa. Clique em qualquer lugar da rotinaPrivate Sub UserForm_Activate(), acesse ento na barra do Menu PrincipalDepurareDepurao Total, conforme mostra a figura a seguir:

Note que a primeira linha da rotina est em destaque e uma pequena seta amarela marca a posio do cursor. Tecle[F8]uma vez. Veja que o destaque e a seta passam para a prxima linha vlida, ignorando os comentrios que fizemos ao colocar uma aspa simples no incio da frase.Continue teclando[F8]e observe na planilha ao fundo a clula ativa deslocar-se at atingir a ltima posio preenchida,A9.Pressione[F8]novamente at que a leitura da clulaA10,em branco, provocar a mudana do estado lgico, fazendo com que o lao termine.Neste ponto, tecle[F5]devolvendo o controle do programa ao computador. Minimize a janela do Visual Basic e clique na seta doComboBoxpara ver os nomes adicionados, como a seguir:

Explicando o cdigoExistem vrios tipos de dados no Visual Basic, neste exemplo tivemos a oportunidade de conhecer o tipoBoolean. Este tipo de dado pode ter apenas dois valores: Verdadeiro ou Falso. Sempre que utilizarmos uma estrutura lgica do tipoDo Whiletemos que iniciar uma varivel deste tipo como verdadeira e exatamente isso que faz a linha:Preencher = TrueOnome da varivel, neste caso, Preencher e claro, o valor atribudo True ou verdadeiro.No cdigo chamamos ateno para a seleo da planilha onde esto contidos os dados que queremos obter para popular oComboBox:Sheets(Plan2).SelectEssa regra muito importante porque se no fizer isso e testar a rotina com a planilha selecionada por voc atravs do mouse, o programa ir funcionar normalmente, porm ao rod-lo a partir de um boto ele tentar executar a mesma coisa, qualquer que seja a planilha selecionada pelo usurio no momento, causando erros.Ainstruo:Range(A1).Selectremete o cursor do Excel para a primeira clula onde o contedo apenas o cabealho dos dados, ou seja, no um dado que queremos incluir no ComboBox por isso, ao iniciarmos o preenchimento do mesmo, avanamos uma linha. Esse avano dado pela instruo:ActiveCell.Offset(1,0).SelectEsse comando muito til. Ele diz ao Excel que, partir da clula onde o cursor est atualmente, deslocar-se em 1 linha e Zero colunas e ento selecionar essa posio, tornando-a ativa. A sintaxe deste comando ActiveCell.Offset(LINHAS,COLUNAS). Como no exemplo temos (1,0), a clula se desloca uma linha e nenhuma coluna. Nmeros negativos tambm podem ser utilizados. Veja as referencias na figura a seguir:

Finalmente, para este formulrio, vamos dar uma olhadinha na instruo:If condiao Thenexecuta algoElse executa algo diferenteEnd ifEssa estrutura lgica verifica se a condio logo aps a palavra chaveIF verdadeira ou falsa. Se for verdadeira, executa a instruo logo abaixo, se no for verdadeira, executa a instruo abaixo da palavraELSE. Em nosso exemplo a condio testada A clula que estamos examinando est vazia traduzida paraActiveCell.Value = vbNullString. Sendo isso verdadeiro, ou seja, se a clula estiver realmente vazia, atribudo o valorFalsepara a varivelPreencher, encerrando a repetio dos comandos, caso contrrio, acrescenta o contedo da clula noComboBoxatravs do comando que j vimos:cbx_Usuarios.AddItem ActiveCell.Value.Algumas observaes a respeito do ComboBox que acabamos de preencher:1. Os nomes no esto dispostos em ordem alfabtica.Para resolver isso, coloque o cursor em qualquer lugar da planilhaPlan3, inicie o gravador de macros, nomeie a macro comoOrdenarNomese ordene os nomes para que fique em ordem crescente. Finalize a gravao, acesse novamente o formulrio 1 atravs do Editor do Visual Basic e acrescente a seguinte linha de cdigo no eventoUserForm_Activate():'Ordena os nomes da listaCall Mdulo1.OrdenarNomes2. Ao apresentar o formulrio oComboBoxestar mostrando uma linha vazia at clicarmos na seta.Para que ele inicie j mostrando o primeiro nome, aps o seu preenchimento inclua a seguinte linha aps a palavraLoop:cbx_Usuarios.ListIndex = 03. Para evitar que, durante programas mais complexos onde temos que acessar um mesmo formulrio varias vezes, oComboBoxseja populado com os mesmos dados repetindo-os, utilize a instruoClearantes de iniciar o seu preechimento.

Ocdigo completo para o formulrio exibido a seguir:----------------------------------------------------------------------------------------------------------Private Sub cmd_Encerrar_Click()EndEnd Sub----------------------------------------------------------------------------------------------------------Private Sub UserForm_Activate()' A estrutura lgica ser denominada Preencher, que pode receber o valor de True (verdadeiro) ou False (falso)Preencher = True'Ordena os nomesCall Mdulo1.OrdenarNomes'Esvazia o ComboBox,caso j esteja preenchido:cbx_Usuarios.Clear'Selecionamos a planilha onde esto os dados a popularem o combobox:Sheets("Plan2").Select'Selecinamos a clula onde est o ncio dos dados.'Note que selecionamos o cabealho da lista e no o primeiro nomeRange("A1").Select'Iniciamos a execuo da estrutura lgicaDo While Preencher = True 'Seleciona a clula que est na linha imediatamente inferior ActiveCell.Offset(1, 0).Select 'Testa o valor da clula e decide se o lao deve ou no continuar If ActiveCell.Value = vbNullString Then 'Se a clula estiver vazia, altera a condio lgica Preencher = FalseElse 'se no estiver, acrescenta o itemcbx_Usuarios.AddItem ActiveCell.Value End IfLoop'Coloca o ComboBox na primeira posio vlida:cbx_Usuarios.ListIndex = 0End Sub----------------------------------------------------------------------------------------------------------Acesse a parte final deste artigo:Excel VBA Parte V: Adicionando cdigo aos controles: UserForm2