Como usar o Visual Basic for Applications (VBA) para alterar os UserForms no Excel

Support for Office 2003 has ended

Microsoft ended support for Office 2003 on April 8, 2014. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 829070
Sumário
Este artigo descreve como alterar UserForms via programação no Microsoft Excel. Ele inclui exemplos e Microsoft Visual Basic for Applications macros (VBA) que mostram como tirar proveito dos recursos de UserForms e como usar os controles de ActiveX™ que estão disponíveis para os UserForms.

Uma introdução sobre os princípios básicos de UserForms descreve como exibir os UserForms, ocultar temporariamente os UserForms e descartar os UserForms. Também são mostrados como usar os eventos mais comuns que estão associados com os UserForms — o Inicializar evento, o Clique em evento e o Encerrar evento. Um ou mais dos exemplos a seguir demonstram como usar cada um dos seguintes controles de ActiveX™ em um UserForm:
  • Rótulo controle
  • Caixa de texto controle
  • CommandButton controle
  • Caixa de listagem controle
  • Caixa de combinação controle
  • Quadro controle
  • OptionButton controle
  • Caixa de seleção controle
  • ToggleButton controle
  • TabStrip controle
  • MultiPage controle
  • Barra de rolagem controle
  • SpinButton controle
  • RefEdit controle
  • Imagem controle
INTRODUÇÃO
Este artigo descreve como usar o VBA para fazer alterações em UserForms no Excel.
Mais Informações
A Microsoft fornece exemplos de programação somente para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação a um propósito específico. Este artigo presume que você esteja familiarizado com a linguagem de programação que está sendo demonstrada e com as ferramentas usadas para criar e depurar procedimentos. Engenheiros de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades específicas.

Noções básicas do UserForm

Como exibir um UserForm

A sintaxe é usada para exibir um UserForm programaticamente é o seguinte:
UserFormName. Mostrar
Para exibir um UserForm é chamado UserForm1, utilize o seguinte código:
UserForm1.Show
Você pode carregar um UserForm na memória sem exibi-lo realmente. Pode levar um UserForm complexo vários segundos para aparecer. Porque você pode pré-carregar um UserForm na memória, você pode decidir quando provoca essa sobrecarga. Para carregar UserForm1 na memória sem exibi-lo, use o seguinte código:
Load UserForm1
Para exibir o formulário de usuário, você deve usar o métodoShow que foi mostrado anteriormente.

Como ocultar temporariamente um UserForm

Se você deseja ocultar temporariamente um UserForm, use o métodoOcultar . Você talvez queira ocultar um UserForm, se seu aplicativo envolve a movimentação entre os UserForms. Para ocultar um UserForm, utilize o seguinte código:
UserForm1.Hide
Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de Conhecimento Microsoft:
213747 XL2000: Como mover entre UserForms personalizados com botões de comando

Como remover um UserForm da memória

Para remover um UserForm da memória, use a instruçãoUnload . Para descarregar um UserForm é chamado UserForm1, utilize o seguinte código:
Unload UserForm1
Se você descarregar um UserForm em um procedimento de evento que está associado com um UserForm ou que está associado com um controle em um formulário de usuário (por exemplo, você clica um controleCommandButton ), você pode usar "Me" palavra-chave em vez do nome do UserForm. Para usar o "Me" palavra-chave para descarregar um UserForm, use o seguinte código:
Unload Me

Como usar eventos UserForm

Os UserForms suporta muitos eventos predefinidos que você pode anexar os procedimentos do VBA. Quando o evento ocorrer, é executado o procedimento anexado ao evento. Uma única ação executada por um usuário pode iniciar vários eventos. Entre mais freqüentemente usados eventos para um UserForm são o evento Initialize , o evento Click e o evento Terminate .

Observação: Um módulo do Visual Basic que contenha um procedimento de evento pode ser chamado como um módulo "UserForm atrás". Um módulo que contém os procedimentos de evento não é visível na coleção Modules da janela do Microsoft Project Explorer do Editor do Visual Basic. Clique duas vezes no corpo de um UserForm para exibir o módulo do código do UserForm.

Como capturar eventos do UserForm

Para ajustar o registro de eventos de formulário de usuário, siga estas etapas:
  1. Crie uma nova pasta de trabalho no Excel.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Clique duas vezes o UserForm para exibir a janela de theCode para o UserForm.
  5. No módulo, digite o seguinte código:
    Private Sub UserForm_Click()    Me.Height = Int(Rnd * 500)    Me.Width = Int(Rnd * 750)End SubPrivate Sub UserForm_Initialize()    Me.Caption = "Events Events Events!"    Me.BackColor = RGB(10, 25, 100)End SubPrivate Sub UserForm_Resize()    msg = "Width: " & Me.Width & Chr(10) & "Height: " & Me.Height    MsgBox prompt:=msg, Title:="Resize Event"End SubPrivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)    msg = "Now Unloading " & Me.Caption    MsgBox prompt:=msg, Title:="QueryClose Event"End SubPrivate Sub UserForm_Terminate()    msg = "Now Unloading " & Me.Caption    MsgBox prompt:=msg, Title:="Terminate Event"End Sub
  6. No menu Executar , clique em RunSub/UserForm.
Quando o UserForm é carregada pela primeira vez, a macro usa o evento Initialize para alterar a propriedade Caption do UserForm para "Eventos eventos eventos!" e a propriedade BackColor como azul escuro.

Quando você clica em um UserForm, inicia o evento Click . O evento Click redimensiona o UserForm. Porque você criou um procedimento para o evento Resize , você receberá duas caixas de mensagem depois de clicar em UserForm. O evento Resize ocorre duas vezes, porque o código por trás do evento Click altera tanto as propriedades de largura e Altura do UserForm.

Fechar o UserForm inicia o evento QueryClose . O evento QueryClose exibe uma caixa de mensagem que contém a legenda que você deu o UserForm no código para o evento Initialize . Você pode usar o evento QueryClose quando você deseja executar um determinado conjunto de ações, se o usuário fechar o UserForm.

O evento Terminate gera uma caixa de mensagem informando que a legenda do UserForm é UserForm1. O evento Terminate ocorre depois que o formulário de usuário é removido da memória e a legenda do UserForm retorna ao seu estado original.

Como impedir que um UserForm está sendo fechada, usando o botão Fechar

Quando você executa um UserForm, um botão Fechar é adicionado ao canto superior direito da janela do UserForm. Se você quiser impedir que o UserForm está sendo fechada, usando o botão Fechar , deve interceptar o evento QueryClose .

O evento QueryClose ocorre imediatamente antes do UserForm é descarregado da memória. Use o argumento CloseMode do evento QueryClose para determinar como o UserForm é fechado. O valor de vbFormControlMenu para o argumento CloseMode indica que foi clicado o botão Fechar . Para manter o formulário de usuário ativo, defina o argumento Cancel do evento QueryClose como True. Para usar o evento QueryClose para impedir que um UserForm está sendo fechada, usando o botão Fechar , siga estas etapas:
  1. Crie uma nova pasta de trabalho no Excel.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle CommandButton ao UserForm.
  5. Clique duas vezes o UserForm para exibir a janela de theCode para o UserForm.
  6. Na janela código, digite o seguinte código:
    Private Sub CommandButton1_Click()    Unload MeEnd SubPrivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)    IF CloseMode = vbFormControlMenu Then        Cancel = True        Me.Caption = "Click the CommandButton to close Me!"    End IfEnd Sub
  7. No menu Executar , clique em RunSub/UserForm.
O UserForm não é fechado quando você clicar no botão Fechar . Você deve clicar no controle CommandButton para fechar o formulário de usuário.

Para obter informações adicionais, clique nos números abaixo para visualizar os artigos na Base de Conhecimento da Microsoft:
207714 XL2000: Erros em tempo de execução usando a coleção UserForms
211527 XL2000: Não é possível arrastar UserForm controle em uma planilha
211868 XL2000: Erro ao executar macro que insere o controle no UserForm
213582 XL2000: Problemas quando você usar a macro para adicionar o controle ao UserForm
213583 XL2000: Não é possível mostrar os UserForms em outros projetos
213736 XL2000: Como determinar a tecla pressionada e o botão do mouse
213744 XL2000: Como ocultar temporariamente um UserForm
213747 XL2000: Como mover entre UserForms personalizados com botões de comando
213749 XL2000: Como utilizar um UserForm para inserir dados
213768 XL2000: Como redimensionar dinamicamente um formulário de usuário
213774 XL2000: Como criar uma tela de inicialização com um UserForm

Código do VBA

O Excel inclui quinze diferentes controles que você pode usar em UserForms. Esta seção contém vários exemplos que usam esses controles por meio de programação.

Observação: O código do VBA que está incluído neste artigo não contém exemplos que afetam todas as propriedades e eventos para os controles. Se for necessário, você pode usar a janela Properties para ver uma lista das propriedades disponíveis para um controle. Para ver uma lista de propriedades, no menu Exibir , clique em Janela de propriedades.

Como usar o modo de design para controles de edição

Quando você usar o Editor do Visual Basic para criar uma caixa de diálogo, você está usando o modo de design. No modo de design, você pode editar controles e você pode alterar as propriedades de um controle em um formulário de usuário na janela de propriedades. Para exibir a janela de propriedades, no menuExibir , clique em Janela de propriedades.

Observação: Controles não respondem a eventos enquanto estiver no modo de design. Quando você executa uma caixa de diálogo para exibi-lo da maneira que usuários vê-lo, o programa está no modo de execução. As alterações feitas nas propriedades de um controle no modo de execução não são mantidas quando o UserForm é descarregado da memória.

Observação: Controles respondem a eventos no modo de execução.

Como fazer referência a controles em um formulário de usuário

Como você referir-se a controles programaticamente depende do tipo de folha de módulo do Visual Basic em que você executar o código. Se estiver executando o código de um módulo geral, a sintaxe é a seguinte:
UserFormName.Controlname.Property = Valor
Por exemplo, se você deseja definir a propriedadeText de um controle TextBox chamado TextBox1 em um UserForm é chamado UserForm1 para o valor do Bob, use o código a seguir:
UserForm1.TextBox1.Text = "Bob"
Se o código estiver em um procedimento que é iniciado por um evento de um controle ou o UserForm, você não precisa se referir ao nome do UserForm. Em vez disso, use o seguinte código:
TextBox1.Text = "Bob"
Quando você anexar o código para um objeto, o código está anexado a um dos eventos do objeto. Em muitos dos exemplos neste artigo, anexe o código para o eventoClick do objeto CommandButton .

Controles de rótulo

Controles de rótulo são principalmente usados para descrever outros controles em um formulário de usuário. Um controle de rótulo não pode ser editado pelo usuário durante a execução do UserForm. Use a propriedade Caption para definir ou retornar o texto em um controle Label . Outras propriedades usadas com freqüência para a formatação de um controle de rótulo incluem a propriedade Font e a propriedade ForeColor .

Como usar uma instrução WITH para formatar um controle Label

Para usar a instrução WITH para alterar as propriedades de um controle Label , siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle de rótulo ao UserForm.
  5. Adicione um controle CommandButton ao UserForm.
  6. Clique duas vezes o controle de CommandButton toopen a janela de código para o UserForm.
  7. Na janela código, digite o seguinte código para o evento Click CommandButton1 :
    Private Sub CommandButton1_Click()    With Label1        ' Set the text of the label.        .Caption = "This is Label Example 1"        ' Automatically size the label control.        .AutoSize = True        .WordWrap = False        ' Set the font used by the Label control.        .Font.Name = "Times New Roman"        .Font.Size = 14        .Font.Bold = True        ' Set the font color to blue.        .ForeColor = RGB(0, 0, 255)    End WithEnd Sub
  8. No menu Executar , clique em RunSub/UserForm.
  9. Clique no CommandButton.
O texto "Este é o exemplo de rótulo 1" é exibida no controle Label em negrito Times New Roman com um tamanho de fonte de 14.

Controles de caixa de texto

Controles TextBox são freqüentemente usados para coletar entrada do usuário. A propriedade Text contém a entrada que é feita em um controle TextBox .

Como usar um controle TextBox para validar uma senha

Se você definir a propriedade PasswordChar de um controle TextBox , ele se torna um controle de "edição mascarada". Cada caractere digitado no controle TextBox é substituído visualmente pelo caractere que você especificar. Para usar um controle TextBox para validar a senha, execute estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle TextBox para o formulário de usuário.
  5. No menu Exibir , clique emPropriedades para tornar visível a janela Propriedades.
  6. Na propriedade PasswordChar do controle TextBox , digite *.

    Observação: Você está alterando o valor de um asterisco.
  7. Adicione um controle CommandButton ao UserForm.
  8. Clique duas vezes o controle de CommandButton toopen a janela de código para o UserForm.
  9. Na janela código, digite o seguinte código para o evento Click CommandButton1 :
    Private Sub CommandButton1_Click()    If TextBox1.Text <> "userform" Then        MsgBox "Password is Incorrect. Please reenter."        TextBox1.Text = ""        TextBox1.SetFocus    Else        MsgBox "Welcome!"        Unload Me    End IfEnd Sub
  10. No menu Executar , clique em RunSub/UserForm.
  11. Digite a senha UserForm no controle TextBox .
  12. Clique no controle CommandButton.
Para esse exemplo, a senha é "userform". Se você digitar uma senha incorreta, você receberá uma caixa de mensagem informando que a senha está incorreta, o controle TextBox é desmarcado e confirme a senha. Quando você digitar a senha correta, você recebe uma mensagem de boas-vindas e o UserForm está fechado.

Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de Conhecimento Microsoft:
213555 XL2000: Nenhuma propriedade de validação de dados para UserForm TextBoxes

Controles CommandButton

Você pode usar um controle CommandButton para iniciar um procedimento VBA. O procedimento do VBA é normalmente anexado ao evento Click do controle CommandButton . Para usar um controle CommandButton que executa um procedimento quando ocorre o evento Click , siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle CommandButton ao UserForm.
  5. Clique duas vezes o controle de CommandButton todisplay a janela de código para o formulário de usuário.
  6. Na janela código, digite o seguinte código:
    Private Sub CommandButton1_Click()    red = Int(Rnd * 255)    green = Int(Rnd * 255)    blue = Int(Rnd * 255)    CommandButton1.BackColor = RGB(red, green, blue)End Sub 
  7. No menu Executar , clique em RunSub/UserForm.
A cor de plano de fundo do controle CommandButton1 é alterado toda vez que você clicar.

Para obter informações adicionais sobre o controle CommandButton, clique nos números abaixo para visualizar os artigos na Base de Conhecimento da Microsoft:
213572 XL2000: quando você clica em botão de cancelamento não pode descartar UserForm
213743 XL2000: Como definir o botão de comando padrão em um UserForm

Controles de caixa de listagem

A finalidade do controle ListBox é apresentar ao usuário uma lista de itens para selecionar. Você pode armazenar a lista de itens para um controle de caixa de listagem em uma planilha do Excel. Para preencher um controle ListBox com um intervalo de células em uma planilha, use a propriedade RowSource . Quando você usa a propriedade MultiSelect , você pode configurar um controle ListBox para aceitar várias seleções.

Como obter o item atualmente selecionado no controle caixa de listagem

Use a propriedade Value de um controle ListBox para retornar o item atualmente selecionado. Para retornar o item atualmente selecionado em uma controle de caixa de listagem de seleção única, siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. Nas células a1: a5 em Sheet1, digite os valores que você deseja usar para preencher o controle caixa de listagem .
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  4. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  5. Adicione um controle de caixa de listagem ao UserForm.
  6. Clique duas vezes o controle de caixa de listagem todisplay a janela de código para o controle ListBox .
  7. Na janela código, digite o seguinte código para o evento Click ListBox1 :
    Private Sub ListBox1_Click()    MsgBox ListBox1.ValueEnd Sub 
  8. No menu Executar , clique em RunSub/UserForm.
Quando você clica em um item na lista, uma caixa de mensagem aparece com o item atualmente selecionado.

Como obter os itens selecionados em um controle de caixa de listagem Selecionar vários

Para determinar os itens selecionados em uma controle de caixa de listagem de seleção múltipla, percorra todos os itens na lista e, em seguida, a propriedade Selected de consulta. Para retornar os itens atualmente selecionados em uma controle de caixa de listagem de seleção múltipla, siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. Nas células a1: a5 em Sheet1, digite os valores que você deseja usar para preencher o controle caixa de listagem .
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  4. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  5. Adicione um controle de caixa de listagem ao UserForm.
  6. No menu Exibir , clique emPropriedades para ver a janela de propriedades.
  7. Digite os valores que são indicados para as seguintes propriedades do controle caixa de listagem :
       Property	   Value   -----------     -----------------------   MultiSelect	   1 - frmMultiSelectMulti   RowSource	   Sheet1!A1:A8
  8. Adicione um controle CommandButton ao UserForm.
  9. Clique duas vezes o controle de CommandButton todisplay a janela de código para o formulário de usuário.
  10. Na janela código, digite o seguinte código para o evento Click CommandButton1 :
    Sub CommandButton1_Click ()       ' Loop through the items in the ListBox.       For x = 0 to ListBox1.ListCount - 1          ' If the item is selected...          If ListBox1.Selected(x) = True Then             ' display the Selected item.             MsgBox ListBox1.List(x)          End If       Next x    End Sub 
  11. No menu Executar , clique em RunSub/UserForm.
  12. Selecione um ou mais itens na lista.
  13. Clique em CommandButton1.
Depois que você clicar em CommandButton1, cada item selecionado no controle caixa de listagem é exibida em uma caixa de mensagem separada. Depois que todos os itens selecionados são exibidos em uma caixa de mensagem, o UserForm é fechado automaticamente.

Como usar a propriedade OrigemDaLinha para preencher um controle ListBox com células em uma planilha

Para usar a propriedade OrigemDaLinha para preencher um controle ListBox de um intervalo de células em uma planilha, siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. Nas células a1: a5 em Sheet1, digite os valores que você deseja usar para preencher o controle caixa de listagem .
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  4. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  5. Adicione um controle de caixa de listagem ao UserForm.
  6. Adicione um controle CommandButton ao UserForm.
  7. Clique duas vezes o controle de CommandButton todisplay a janela de código para o formulário de usuário.
  8. Na janela código, digite o seguinte código para o evento Click CommandButton1 :
    Private Sub CommandButton1_Click()    ListBox1.RowSource = "=Sheet1!A1:A5"End Sub 
  9. No menu Executar , clique em RunSub/UserForm.

    Observação:ListBox1 não contém quaisquer valores.
  10. Clique em CommandButton1.
ListBox1 é preenchida com os valores nas células a1: a5 em Sheet1.

Como preencher um controle ListBox com valores em uma matriz

Este exemplo mostra como preencher um controle ListBox com uma variável de matriz. Você deve atribuir os valores da matriz para o item de um controle caixa de listagem ao mesmo tempo. Normalmente, esse processo exige que você use uma estrutura de loop, como um para... Próxima loop. Para preencher um controle ListBox com uma variável de matriz, siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle de caixa de listagem ao UserForm.
  5. No menu Inserir , clique emmódulo para inserir uma planilha de módulo.
  6. Na janela código, digite o seguinte código:
    Sub PopulateListBox()    Dim MyArray As Variant    Dim Ctr As Integer    MyArray = Array("Apples", "Oranges", "Peaches", "Bananas", "Pineapples")        For Ctr = LBound(MyArray) To UBound(MyArray)        UserForm1.ListBox1.AddItem MyArray(Ctr)    Next        UserForm1.ShowEnd Sub 
  7. No menu Ferramentas , clique emMacros, clique em PopulateListBoxe, em seguida, clique emExecutar.
O procedimento PopulateListBox cria uma matriz simple e adiciona os itens na matriz ao controle ListBox usando o método AddItem . Em seguida, aparece o UserForm.

Como usar um intervalo horizontal de células em uma planilha para preencher um controle ListBox

Se você definir a propriedade OrigemDaLinha de um controle ListBox como um intervalo horizontal de células, somente o primeiro valor é exibido no controle ListBox .

Para preencher um controle ListBox de um intervalo horizontal de células usando o método AddItem , siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. Nas células a1: E1 em Sheet1, digite os valores que você deseja usar para preencher o controle caixa de listagem .
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  4. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  5. Adicione um controle de caixa de listagem ao UserForm.
  6. No menu Inserir , clique emmódulo para inserir uma planilha de módulo.
  7. Na janela código, digite o seguinte código:
    Sub PopulateListWithHorizontalRange()    For Each x In Sheet1.Range("A1:E1")        UserForm1.ListBox1.AddItem x.Value    Next        UserForm1.ShowEnd Sub
  8. No menu Ferramentas , clique emMacros, clique emPopulateListWithHorizontalRangee, em seguida, clique emExecutar.
O procedimento de macro percorre em células a1: E5 em Sheet1, adicionando os valores em ListBox1 um de cada vez.

Observação:ListBox1 não está associado a células a1: E5 na Sheet1.

Como retornar vários valores de um controle de caixa de listagem que está associado a várias colunas de dados

Você pode formatar os controles de caixa de listagem para exibir mais de uma coluna de dados. Isso significa que o controle de caixa de listagem exibe mais de um item em cada linha da lista. Para retornar vários valores do item selecionado na lista, execute estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. Digite os seguintes dados nas células que são onSheet1 indicado:

    A1: anoB1: regiãoC1: vendas
    A2: 1996 B2: norteC2: 140
    A3: 1996B3: SulC3: 210
    A4: 1997B4: norteC4: 190
    A5: 1997B5: SulC5: 195
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  4. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  5. Adicione um controle de rótulo ao UserForm.
  6. Adicione um controle de caixa de listagem ao UserForm.
  7. Clique com botão direito da caixa de listageme, em seguida, clique emPropriedades.
  8. Digite ou selecione os valores que são indicados para asseguintes propriedades do controle caixa de listagem , conforme listado na tabela a seguir:
       Property       Value   ----------------------------   BoundColumn     1   ColumnCount     3   ColumnHeads     True   RowSource       Sheet1!A2:A5
  9. Clique duas vezes o controle de caixa de listagem todisplay a janela de código para o controle ListBox .
  10. Na janela código, digite o seguinte código:
    Private Sub ListBox1_Change()    Dim SourceData As Range    Dim Val1 As String, Val2 As String, Val3 As String        Set SourceRange = Range(ListBox1.RowSource)        Val1 = ListBox1.Value    Val2 = SourceRange.Offset(ListBox1.ListIndex, 1).Resize(1, 1).Value    Val3 = SourceRange.Offset(ListBox1.ListIndex, 2).Resize(1, 1).Value        Label1.Caption = Val1 & " " & Val2 & " " & Val3End Sub
  11. No menu Executar , clique em RunSub/UserForm.
Quando você clicar em uma entrada no controle ListBox , o rótulo é alterado para exibir todos os três itens de entrada.

Como remover todos os itens de um controle de caixa de listagem está vinculado a uma planilha

Para remover todos os itens de um controle de caixa de listagem está vinculado a uma planilha, desmarque o valor que é armazenado na propriedade OrigemDaLinha . Para remover itens de um controle de caixa de listagem está vinculado a uma planilha, siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. Nas células a1: a5 em Sheet1, digite os valores que você deseja usar para preencher o controle caixa de listagem .
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  4. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  5. Adicione um controle de caixa de listagem ao UserForm.
  6. Clique com botão direito no controle ListBox e thenclick Propriedades.
  7. Na propriedade OrigemDaLinha , digite Plan1! A1: A5.
  8. Adicione um controle CommandButton ao UserForm.
  9. Clique duas vezes no controle de CommandButton todisplay a janela de código para o controle CommandButton .
  10. Na janela código, digite o seguinte código para o evento Click CommandButton1 :
    Private Sub CommandButton1_Click()    ListBox1.RowSource = ""End Sub
  11. No menu Executar , clique em RunSub/UserForm.

    O controle de caixa de listagemque você adicionou ao UserForm é preenchido com thevalues que você inseriu em Sheet1.
  12. Clique em CommandButton1.
Todos os itens são removidos do ListBox1.

Como remover todos os itens de um controle de caixa de listagem não está vinculado a uma planilha

Não há nenhum comando VBA único que remove todos os itens de um controle ListBox , se a lista não estiver vinculada a uma planilha. Para remover todos os itens de um controle de caixa de listagem é preenchido com uma matriz do Visual Basic, execute essas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle de caixa de listagem ao UserForm.
  5. No menu Inserir , clique emmódulo para inserir uma planilha de módulo.
  6. Na janela código, digite o seguinte código:
    Sub PopulateListBox()    Dim MyArray As Variant    Dim Ctr As Integer    MyArray = Array("Apples", "Oranges", "Peaches", "Bananas", "Pineapples")        For Ctr = LBound(MyArray) To UBound(MyArray)        UserForm1.ListBox1.AddItem MyArray(Ctr)    Next        UserForm1.ShowEnd Sub 
  7. Adicione um controle CommandButton ao UserForm.
  8. Clique duas vezes no controle de CommandButton todisplay a janela de código para o controle CommandButton .
  9. Na janela código, digite o seguinte código para o evento Click CommandButton1 :
    Private Sub CommandButton1_Click()    For i = 1 To ListBox1.ListCount        ListBox1.RemoveItem 0    Next IEnd Sub
  10. No menu Ferramentas , clique emMacros, clique em PopulateListBoxe, em seguida, clique emExecutar.

    O controle ListBox está preenchido e, em seguida, aparece o UserForm.
  11. Clique em CommandButton1.
Todos os itens são removidos do ListBox1.

Para obter informações adicionais sobre o controle ListBox, clique nos números abaixo para visualizar os artigos na Base de Conhecimento da Microsoft:
161598 OFF: Como adicionar dados a uma caixa de combinação ou caixa de listagem no Excel ou no Word
211446 XL2000: Propriedade TextColumn exibe apenas a primeira coluna
211896 XL2000: Como simular combinação controle caixa de listagem-edição de UserForms
211899 XL2000: Problemas ao configurar cabeçalhos de coluna no controle ListBox
213721 XL2000: Como remover todos os itens de um ListBox ou ComboBox
213722 XL2000: Como utilizar a propriedade TextColumn
213723 XL2000: Como retornar valores de uma caixa de listagem que exibe várias colunas
213746 XL2000: Como preencher o controle caixa de listagem com vários intervalos
213748 XL2000: Como preencher uma caixa de listagem com base em outra caixa de listagem
213752 XL2000: Usar o método AddItem causa um erro quando OrigemDaLinha está ligado a dados
213756 XL2000: Usando o método RemoveItem com controle ListBox ou ComboBox
213759 XL2000: Como determinar quais itens estão selecionados em uma caixa de listagem

Controles de caixa de combinação

Você pode usar o controle ComboBox como uma caixa de listagem suspensa ou uma caixa de combinação onde você pode selecionar um valor em uma lista ou digite um novo valor. A propriedade Style determina se o controle ComboBox atua como uma caixa de listagem suspensa ou uma caixa de combinação.

Observação: Todos os exemplos da seção anterior para o controle ListBox também podem ser aplicados a um controle ComboBox , exceto o exemplo "Como obter os itens selecionados em um controle de caixa de listagem de seleção múltipla".

Como adicionar um novo item à lista se o controle de caixa de combinação não estiver vinculado a uma planilha

Quando você digitar um valor que não esteja na lista no controle caixa de combinação , convém adicionar o novo valor à lista. Para adicionar o novo valor digitado no controle ComboBox caso o controle ComboBox não está vinculado à planilha, siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle ComboBox para o UserForm.
  5. No menu Inserir , clique emmódulo para inserir uma planilha de módulo.
  6. Na janela código, digite o seguinte código:
    Sub PopulateComboBox()     Dim MyArray As Variant     Dim Ctr As Integer     MyArray = Array("Apples", "Oranges", "Peaches", "Bananas", "Pineapples")         For Ctr = LBound(MyArray) To Ubound(MyArray)         UserForm1.ComboBox1.AddItem MyArray(Ctr)     Next         UserForm1.Show End Sub
  7. Adicione um controle CommandButton ao UserForm.
  8. Clique duas vezes no controle de CommandButton todisplay a janela de código para o controle CommandButton .
  9. Na janela código, digite o seguinte código para o evento Click CommandButton1 :
    Private Sub CommandButton1_Click()     Dim listvar As Variant          listvar = ComboBox1.List         On Error Resume Next     ' If the item is not found in the list...     If IsError(WorksheetFunction.Match(ComboBox1.Value, listvar, 0)) Then         ' add the new value to the list.         ComboBox1.AddItem ComboBox1.Value     End If End Sub
  10. No menu Ferramentas , clique emMacros, clique em PopulateListBoxe, em seguida, clique emExecutar.

    O controle caixa de combinação é preenchido e, em seguida, aparece o UserForm.
  11. No controle de caixa de combinação , digite Mangas (ou qualquer valor thatis ainda não estiver na lista).
  12. Clique em CommandButton1.
O novo valor digitado agora aparece no final da lista.

Como adicionar um novo item à lista se o controle de caixa de combinação estiver vinculado a uma planilha

Quando um usuário digita um valor que não esteja na lista no controle caixa de combinação , convém adicionar o novo valor à lista. Para adicionar o novo valor digitado no controle caixa de combinação à lista, execute estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. Nas células a1: a5 em Sheet1, digite os valores que você deseja usar para preencher o controle caixa de combinação .
  3. Selecionar as células a1: a5 em Sheet1.
  4. No menu Inserir , aponte paranomee, em seguida, clique em Definir.

    Na caixanomes na pasta de trabalho , digite ListRange e, em seguida, clique em OK. Isso cria o nome definido ListRange. Você pode usar o nome definido ListRange para vincular a propriedade OrigemDaLinha do controle ComboBox para a planilha.
  5. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  6. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  7. Adicione um controle ComboBox para o UserForm.
  8. Nas Propriedades de ComboBox1, digite Plan1! ListRange como a propriedadeOrigemDaLinha .
  9. Adicione um controle CommandButton ao UserForm.
  10. Clique duas vezes no controle de CommandButton todisplay a janela de código para o controle CommandButton .
  11. Na janela código, digite o seguinte código para o evento Click CommandButton1 :
    Private Sub CommandButton1_Click()    Dim SourceData As Range    Dim found As Object        Set SourceData = Range("ListRange")    Set found = Nothing    ' Try to find the value on the worksheet.    Set found = SourceData.Find(ComboBox1.Value)        ' If the item is not found in the list...    If found Is Nothing Then        ' redefine ListRange.        SourceData.Resize(SourceData.Rows.Count + 1, 1).Name = "ListRange"        ' Add the new item to the end of the list on the worksheet.        SourceData.Offset(SourceData.Rows.Count, 0).Resize(1, 1).Value _         = ComboBox1.Value        ' Reset the list displayed in the ComboBox.        ComboBox1.RowSource = Range("listrange").Address(external:=True)    End IfEnd Sub
  12. No menu Executar , clique em RunSub/UserForm.

    O UserForm aparece em Sheet1.
  13. No controle de caixa de combinação , digite um valor que não esteja na lista.
  14. Clique em CommandButton1.
O novo item digitado no controle ComboBox é adicionado à lista e lista o controle ComboBox é vinculado é expandida para incluir as células a1: a6.

Como exibir a lista de um controle ComboBox quando aparece o UserForm

Às vezes, pode ser útil exibir a lista de um controle de caixa de combinação quando um UserForm aparece primeiro. O exemplo a seguir usa o evento Activate do UserForm. Para exibir a lista de um controle ComboBox , siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. Nas células a1: a5 em Sheet1, digite os valores que você deseja usar para preencher o controle caixa de combinação .
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  4. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  5. Adicione um controle ComboBox para o UserForm.
  6. Nas Propriedades de ComboBox1, digite Plan1! A1: A5 como a propriedadeOrigemDaLinha .
  7. Clique duas vezes o UserForm para exibir a janela de theCode para o UserForm.
  8. Na janela código, digite o seguinte código para o evento CommandButton Click :
    Private Sub UserForm_Activate()           ComboBox1.DropDown       End Sub
  9. No menu Executar , clique em RunSub/UserForm.
O UserForm aparece em Sheet1 e você pode ver a lista de ComboBox1.

Como exibir a lista de um controle de caixa de combinação quando você faz uma seleção em outro controle ComboBox

Para exibir a lista de um controle ComboBox automaticamente quando uma opção for feita em outro controle caixa de combinação , siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. Nas células a1: a10 de Sheet1, digite os valores que você deseja usar para preencher o controle caixa de combinação .
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  4. No menu Inserir , clique emmódulo.
  5. Na janela de código do módulo, digite o seguinte código:
    Sub DropDown_ComboBox()    UserForm1.ComboBox2.DropDownEnd Sub
  6. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  7. Adicione um controle ComboBox para o UserForm.
  8. Nas Propriedades de ComboBox1, digite Plan1! A1: A5 como a propriedadeOrigemDaLinha .
  9. Clique duas vezes no controle ComboBox para Abraa a janela de código para o controle ComboBox .
  10. Na janela de código para o controle caixa de combinação , digite o seguinte código para o evento Click de ComboBox :
    Private Sub ComboBox1_Click()    Application.OnTime Now, "DropDown_ComboBox"End Sub
  11. Adicione um segundo controle ComboBox ao UserForm.
  12. Nas Propriedades de ComboBox2, digite: Plan1! A6:A10 como a propriedadeOrigemDaLinha .
  13. No menu Executar , clique em RunSub/UserForm.
Quando você clica em um item na lista ComboBox1 , a lista de ComboBox2 aparece automaticamente.

Para obter informações adicionais sobre o controle de caixa de combinação, clique nos números abaixo para visualizar os artigos na Base de Conhecimento da Microsoft:
161598 OFF: Como adicionar dados a uma caixa de combinação ou caixa de listagem no Excel ou no Word
211446 XL2000: Propriedade TextColumn exibe apenas a primeira coluna
211899 XL2000: Problemas ao configurar cabeçalhos de coluna no controle ListBox
213717 XL2000: Erro em tempo de execução usando o método DropDown com uma caixa de combinação
213718 XL2000: Como exibir uma lista de caixa de combinação quando um UserForm é exibido
213721 XL2000: Como remover todos os itens de um ListBox ou ComboBox
213722 XL2000: Como utilizar a propriedade TextColumn
213752 XL2000: Usar o método AddItem causa um erro quando dados OrigemDaLinha está vinculado
213756 XL2000: Usando o método RemoveItem com controle ListBox ou ComboBox

Controle de quadro

Use um controle de quadro para agrupar itens relacionados logicamente em um UserForm. Quadro de controles são usados para agrupar controles OptionButton .

Como efetuar um loop por todos os controles em um controle de quadro

Para usar um para cada... Próxima loop para acessar todos os controles em um controle de quadro , siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle de quadro ao UserForm.
  5. Adicione um controle OptionButton para o controle do quadro .

    Repita essa etapa para adicionar mais dois controles OptionButton no controle do quadro .
  6. Clique duas vezes no controle de quadro para abrir janela theCode para o controle de quadro .
  7. Na janela código, digite o seguinte código para o evento Click de quadro :
    Private Sub Frame1_Click()    Dim Ctrl As Control        For Each Ctrl In Frame1.Controls        Ctrl.Enabled = Not Ctrl.Enabled    NextEnd Sub
  8. No menu Executar , clique em RunSub/UserForm.
  9. No UserForm, clique no controle de quadro.
Na primeira vez que você clicar no controle de quadro , todos os controles no controle quadro não estão disponíveis. Se você clicar novamente no controle de quadro , os controles estão disponíveis novamente.

Controle OptionButton

Você pode usar grupos de controles OptionButton para fazer uma seleção entre um grupo de opções. Você pode usar qualquer uma das seguintes técnicas para agrupar OptionButton controles:
  • Controle de quadro
  • Propriedade GroupName
Observação: O valor no , o valor Sim e o valor verdadeiro indicam que um OptionButton é selecionado. O valor de desativado , o valor não e o valor False indicam que um OptionButton não está selecionada.

Como determinar o controle OptionButton é selecionado quando os controles OptionButton em um controle de quadro

Ao agrupar os controles Botõesdeopção usando um controle de quadro , você pode determinar o controle OptionButton selecionado loop através de todos os controles no controle de quadro e verificando a propriedade Value de cada controle. Para determinar o controle OptionButton selecionada, execute essas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle de quadro ao UserForm.
  5. Adicione um controle OptionButton para o controle do quadro .

    Repita essa etapa para adicionar mais dois controles OptionButton no controle do quadro .
  6. Adicione um controle CommandButton no UserForm fora do controle do quadro .
  7. Clique duas vezes o controle de CommandButton todisplay a janela de código para o formulário de usuário.
  8. Na janela código, digite o seguinte código para o evento Click CommandButton1 :
    Private Sub CommandButton1_Click()     For Each x In Frame1.Controls         If x.Value = True Then             MsgBox x.Caption         End If     Next End Sub
  9. No menu Executar , clique em RunSub/UserForm.
  10. No UserForm, clique em um controle OptionButton e, em seguida, clique emCommandButton1.
Aparece uma caixa de mensagem que contém a legenda do controle OptionButton atualmente selecionado.

Como determinar o controle OptionButton é selecionado

O objetivo do exemplo a seguir é determinar o controle OptionButton selecionado em Grupo1. Para criar um UserForm que tem dois grupos de controles OptionButton , siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle de quadro ao UserForm.
  5. Adicione um controle OptionButton no controle do quadro .

    Repita essa etapa para adicionar mais dois controles OptionButton no controle do quadro .
  6. Para cada controle OptionButton , digite Grupo1 na propriedade GroupName .
  7. Repita as etapas 4 e 5 para criar um segundo controle do quadro que contém três controles OptionButton .
  8. Para cada controle OptionButton no segundo controle de quadro , digite Grupo2 na propriedade GroupName .
  9. Adicione um controle CommandButton no UserForm fora controles Frame .
  10. Clique duas vezes o controle de CommandButton todisplay a janela de código para o formulário de usuário.
  11. Na janela código, digite o seguinte código para o evento Click CommandButton1 :
    Private Sub CommandButton1_Click()     Dim x As Control          ' Loop through ALL the controls on the UserForm.     For Each x In Me.Controls         ' Check to see if "Option" is in the Name of each control.         If InStr(x.Name, "Option") Then             ' Check Group name.             If x.GroupName = "Group1" Then                 ' Check the status of the OptionButton.                 If x.Value = True Then                     MsgBox x.Caption                     Exit For                 End If             End If         End If     Next End Sub
  12. No menu Executar , clique em RunSub/UserForm.
  13. No UserForm, clique em um controle OptionButton no Grupo1 e, em seguida, clique emCommandButton1.
Aparece uma caixa de mensagem que contém a legenda do controle OptionButton que está selecionado no momento.

Para obter informações adicionais sobre controles OptionButton, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:
213724 XL2000: Problemas usando a propriedade TripleState para botão de opção

Controle CheckBox

Você pode usar um controle CheckBox para indicar um valor verdadeiro ou falso. Um controle de caixa de seleção que aparece com uma marca de verificação indica um valor de True. Uma caixa de seleção que aparece com nenhuma marca de seleção indica um valor de False. Se o valor da propriedade TripleState for verdadeiro, um controle de caixa de seleção também pode ter um valor Nulo. Um controle de caixa de seleção que tem um valor Nulo parece não estar disponível.

Observação: O valor no , o valor Sim e o valor verdadeiro indicam que um controle de caixa de seleção está selecionado. O valor desativado , o valor não e o valor False indicam que um controle de caixa de seleção está desmarcado.

Como verificar o valor de um controle CheckBox

Para usar a propriedade Value para retornar o valor atual de um controle de caixa de seleção , siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle CheckBox para o formulário de usuário.
  5. Na lista de propriedades para CheckBox1, selecione True como a propriedade TripleState .
  6. Clique duas vezes o controle de caixa de seleção todisplay a janela de código para o controle CheckBox .
  7. Na janela código, digite o seguinte código para o evento de Alteração de CheckBox1 :
    Private Sub CheckBox1_Change()    Select Case CheckBox1.Value        Case True            CheckBox1.Caption = "True"        Case False            CheckBox1.Caption = "False"        Case Else            CheckBox1.Caption = "Null"    End SelectEnd Sub
  8. No menu Executar , clique em RunSub/UserForm.
Quando você clicar no controle de caixa de seleção , a legenda do controle caixa de seleção se altera para refletir o valor atual.

Controle ToggleButton

Um controle ToggleButton tem a mesma aparência como um controle CommandButton até você clicar nele. Quando você clica em um controle ToggleButton , ele parece ser pressionado ou empurrado para baixo. A propriedade Value de um controle ToggleButton é Falso e verdadeiro quando o botão é selecionado quando o botão não fique selecionado. Se o valor da propriedade TripleState for verdadeiro, um controle ToggleButton também pode ter um valor Nulo. Um controle ToggleButton que tem um valor Nulo parece não estar disponível.

Observação: O valor no , o valor Sim e o valor verdadeiro indicam que um controle ToggleButton está selecionado. O valor de desativado , o valor não e o valor False indicam que um controle ToggleButton não está selecionado.

Como obter o valor de um controle ToggleButton

Para obter o valor de um controle ToggleButton , siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle ToggleButton no UserForm.
  5. Adicione um controle de rótulo ao UserForm.
  6. Clique duas vezes no toopen de controle ToggleButton a janela de código para o controle ToggleButton .
  7. Na janela código, digite o seguinte código para o evento ToggleButton1Click :
    Private Sub ToggleButton1_Click()    If ToggleButton1.Value = True Then        ' Set UserForm background to Red.        Me.BackColor = RGB(255, 0, 0)    Else        ' Set UserForm background to Blue.        Me.BackColor = RGB(0, 0, 255)    End IfEnd Sub
  8. No menu Executar , clique em RunSub/UserForm.
Quando você clica no controle ToggleButton , a cor de plano de fundo das alterações UserForm.

Como criar um grupo de controles ToggleButton mutuamente exclusivos

Este exemplo usa o evento MouseUp para definir uma variável e chama o procedimento ExclusiveToggleButtons . O procedimento ExclusiveToggleButtons determina o controle ToggleButton selecionado e cancela a outras pessoas. Para criar um grupo de controles ToggleButton mutuamente exclusivos, siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emmódulo.
  4. Na janela de código do módulo, digite o seguinte código:
    ' Variable that holds the name of the ToggleButton that was clicked.Public clicked As StringSub ExclusiveToggleButtons()   Dim toggle As Control   ' Loop through all the ToggleButtons on Frame1.   For Each toggle In UserForm1.Frame1.Controls       ' If Name of ToggleButton matches name of ToggleButton       ' that was clicked...       If toggle.Name = clicked Then          '...select the button.          toggle.Value = True       Else          '...otherwise clear the selection of the button.          toggle.Value = False       End If    NextEnd Sub
  5. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  6. Adicione um controle de quadro ao UserForm.
  7. Adicione um controle ToggleButton no controle do quadro .

    Repita essa etapa para adicionar dois controles ToggleButton mais no controle do quadro .
  8. Clique duas vezes o controle Frame à janela de código displaythe para o UserForm.
  9. Na janela de código do módulo, digite o seguinte codefor o evento ToggleButton MouseUp :
    Private Sub ToggleButton1_MouseUp(ByVal Button As Integer, _              ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)       clicked = ToggleButton1.Name       Application.OnTime Now, "ExclusiveToggleButtons"    End Sub    Private Sub ToggleButton2_MouseUp(ByVal Button As Integer, _              ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)        clicked = ToggleButton2.Name        Application.OnTime Now, "ExclusiveToggleButtons"    End Sub    Private Sub ToggleButton3_MouseUp(ByVal Button As Integer, _              ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)        clicked = ToggleButton3.Name        Application.OnTime Now, "ExclusiveToggleButtons"    End Sub
  10. No menu Executar , clique em RunSub/UserForm.
Quando você clica em um controle ToggleButton , controle ToggleButton anteriormente selecionado é cancelado.

Controle TabStrip

Use um controle TabStrip para exibir diferentes conjuntos de informações para um conjunto de controles.

Como controlar programaticamente um controle TabStrip

Para alterar a propriedade BackColor de um controle de imagem com base na guia selecionada, execute essas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe clique em Editor do Visual Basic.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle TabStrip UserForm.
  5. Adicionar um controle de imagem que cobre a base do controle TabStrip , mas que não cobre as guias.
  6. No painel Propriedades Image1, digite& H000000FF & na propriedade BackColor .
  7. Clique duas vezes o controle TabStrip Abraa a janela de código para o controle TabStrip .
  8. Na janela código, digite o seguinte código para o evento Change TabStrip1 :
    Private Sub TabStrip1_Change()    Dim i As Integer    i = TabStrip1.SelectedItem.Index    Select Case i        Case 0            ' If Tab1 is selected, change the color of Image control to Red.            Image1.BackColor = RGB(255, 0, 0)        Case 1            ' If Tab2 is selected, change the color of Image control to Green.            Image1.BackColor = RGB(0, 255, 0)    End SelectEnd Sub
  9. No menu Executar , clique em RunSub/UserForm.
A cor do controle imagem muda dependendo da página no controle TabStrip que está ativa.

Para obter informações adicionais sobre o controle TabStrip, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:
213254 XL2000: Como usar o controle TabStrip em um UserForm

Controle multiPage

Use um controle MultiPage para trabalhar com uma grande quantidade de informações que podem ser classificadas em várias categorias. Um controle MultiPage é composto de um ou mais página objetos que cada um contém um conjunto de controles diferente. Você pode definir a página ativa por meio de programação, definindo a propriedade Value do controle MultiPage .

Como controlar programaticamente um controle MultiPage

Para adicionar um controle MultiPage e controlá-la usando uma macro, siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle MultiPage UserForm.
  5. Adicione um controle Label para Página1 no controle MultiPage .
  6. Adicione um controle TextBox para Página1 no controle MultiPage .
  7. No controle MultiPage , clique em Page2e, em seguida, repita as etapas 5and 6 para adicionar um controle Label e um controle TextBox .
  8. Clique duas vezes o controle MultiPage Abraa a janela de código para o controle MultiPage .
  9. Na janela código, digite o seguinte código para o evento Change MultiPage1 :
    Private Sub MultiPage1_Change()    Select Case MultiPage1.Value        ' If activating Page1...        Case 0            Label1.Caption = TextBox2.Text            TextBox1.Text = ""        ' If activating Page2...        Case 1            Label2.Caption = TextBox1.Text            TextBox2.Text = ""    End SelectEnd Sub
  10. Na janela código, digite o seguinte código para o evento UserForm Initialize :
    Private Sub UserForm_Initialize()    ' Force Page1 to be active when UserForm is displayed.    MultiPage1.Value = 0    Label1.Caption = ""End Sub
  11. No menu Executar , clique em RunSub/UserForm.

    No controle TextBox na Página1, digite Teste. Quando youclick guia Página2 , TextBox2 é desmarcada e a legenda Label2 muda para a entrada feita em TextBox1 na Página1 ("teste").

Como criar uma interface de assistente usando um controle MultiPage

Quando uma tarefa requer várias etapas incrementais, uma interface de assistente pode ser muito eficaz. Você pode usar o controle MultiPage para criar uma interface de assistente em vez de usar várias UserForms. Este exemplo manipula um controle MultiPage que tem três páginas. Um procedimento que é anexado ao evento Initialize do UserForm desativa Page2 e Page3 e força Página1 do controle MultiPage esteja ativo.

Observação: Ao indexar as páginas de um controle MultiPage usando a coleção de páginas , a primeira página da coleção é página zero. Esse procedimento também define a legenda dos controles CommandButton e desativa o <> botão.

Observação: O procedimento é atribuído ao evento Click de CommandButton1 controla a funcionalidade do <> botão. O procedimento é atribuído ao evento Click de CommandButton2 controla a funcionalidade do próxima > botão. Para criar uma interface de assistente usando um controle MultiPage , siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle MultiPage UserForm.
  5. Clique na guia Página1 e, em seguida, clique emNova página para adicionar o controle MultiPage Page3.
  6. Adicione um controle CommandButton no UserForm não está no controle MultiPage .

    Repita essa etapa para adicionar um segundo controle CommandButton no UserForm.
  7. Clique duas vezes o UserForm para abrir o Codewindow para o UserForm.
  8. Na janela código, digite o seguinte código para o evento UserForm Initialize :
    Private Sub UserForm_Initialize()    With MultiPage1        ' The next 2 lines disable Page2 & Page3.        .Pages(1).Enabled = False        .Pages(2).Enabled = False        ' Make Page1 the active page.        .Value = 0    End With        ' Set the caption on the CommandButtons.    CommandButton1.Caption = "<Back"    CommandButton1.Enabled = False    CommandButton2.Caption = "Next>"End Sub' Procedure for the "<Back" buttonPrivate Sub CommandButton1_Click()    Select Case MultiPage1.Value        Case 1                                 ' If Page2 is active...            With MultiPage1                .Pages(0).Enabled = True       ' Enable Page1.                .Value = MultiPage1.Value - 1  ' Move back 1 page.                .Pages(1).Enabled = False      ' Disable Page2.            End With            CommandButton1.Enabled = False     ' Disable Back button.                    Case 2                                 ' If Page3 is active...            With MultiPage1                .Pages(1).Enabled = True       ' Enable Page2.                .Value = MultiPage1.Value - 1  ' Move back 1 page.                .Pages(2).Enabled = False      ' Disable Page3.   CommandButton2.Caption = "Next>"            End With    End SelectEnd Sub' Procedure for the "Next>" buttonPrivate Sub CommandButton2_Click()    Select Case MultiPage1.Value        Case 0                                  ' If Page1 is active...            With MultiPage1                .Value = MultiPage1.Value + 1   ' Move forward 1 page.                .Pages(1).Enabled = True        ' Enable Page2.                .Pages(0).Enabled = False       ' Disable Page1.            End With            CommandButton1.Enabled = True       ' Enable Back button.                    Case 1                                  ' If Page2 is active...            With MultiPage1                .Value = MultiPage1.Value + 1   ' Move forward 1 page.                .Pages(2).Enabled = True        ' Enable Page3.                .Pages(1).Enabled = False       ' Disable Page2.            End With            CommandButton2.Caption = "Finish"   ' Change Next button to Finish.                    Case 2                                  ' If Page3 is active...            MsgBox "Finished!"                  ' User is Finished.            Unload Me                           ' Unload the UserForm.    End SelectEnd Sub
  9. No menu Executar , clique em RunSub/UserForm.
Quando você clica em próxima >, Página2 é ativado e o <> botão ficará disponível. Quando você clica em próxima > uma segunda vez, Page3 é ativado e a legenda para CommandButton2 muda para "Concluir".

Controle de barra de rolagem

Você pode usar um controle de barra de rolagem quando você deseja alterar o valor exibido pelo outro controle, como um controle de rótulo .

Como alterar um controle de rótulo é baseado no valor de um controle barra de rolagem

Para alterar a propriedade Caption de um controle Label para a configuração atual da propriedade Value de um controle barra de rolagem , siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle de barra de rolagem ao UserForm.
  5. Adicione um controle de rótulo ao UserForm.
  6. Clique duas vezes o controle de barra de rolagem para Abraa a janela de código para o controle de barra de rolagem .
  7. Na janela código, digite o seguinte código para o evento Change ScrollBar1 :
    Private Sub ScrollBar1_Change()    Label1.Caption = ScrollBar1.ValueEnd Sub
  8. No menu Executar , clique em RunSub/UserForm.
Quando você rolar usando o controle de barra de rolagem , Label1 é atualizada com o valor atual do controle barra de rolagem .

Controle SpinButton

Um controle SpinButton , como um controle de barra de rolagem , é freqüentemente usado para incrementar ou decrementar o valor de outro controle, como um controle de rótulo . A propriedade SmallChange determina quanto o valor de um controle SpinButton muda quando ele for clicado.

Como adicionar um controle SpinButton que incrementa ou decrementa um dado que esta armazenado em um controle TextBox

Para adicionar um controle SpinButton que incrementa ou decrementa uma data que é armazenado em um controle TextBox , siga estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle SpinButton UserForm.
  5. Adicione um controle TextBox para o formulário de usuário.
  6. Clique duas vezes no toopen de controle SpinButton a janela de código para o controle SpinButton .
  7. Na janela código, digite o seguinte código para o evento SpinButton1 SpinUp :
    Private Sub SpinButton1_SpinUp()    TextBox1.Text = DateValue(TextBox1.Text) + 1End Sub
  8. Na janela código, digite o seguinte código para o evento SpinButton1 SpinDown :
    Private Sub SpinButton1_SpinDown()    TextBox1.Text = DateValue(TextBox1.Text) - 1End Sub
  9. Na janela código, digite o seguinte código para o evento UserForm Initialize :
    Private Sub UserForm_Initialize()    TextBox1.Text = DateEnd Sub
  10. No menu Executar , clique em RunSub/UserForm.
Quando o formulário de usuário for exibida, a data atual é exibida em TextBox1. Quando você clicar no controle SpinButton , a data será incrementado ou diminuído por um dia.

Neste exemplo, se você alterar a propriedade SmallChangeSpinButton1, você não afeta o número de dias que a entrada em TextBox1 é alterada, quando você clica SpinButton1. O número de dias é determinado somente pelo procedimento que anexado ao evento SpinUp e o evento SpinDownSpinButton1.

Para obter informações adicionais sobre o controle SpinButton, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:
213224 XL2000: exemplo de Visual Basic para usar um botão de rotação com uma data

Controle RefEdit

O controle RefEdit simula o comportamento das caixas de referência são incorporadas no Excel. Você pode usar a propriedade Value para obter o endereço da célula atual que são armazenados em um controle RefEdit .

Como preencher um intervalo de células com base no intervalo que você selecionar usando o controle RefEdit

Para usar o controle RefEdit para preencher células, execute estas etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle RefEdit UserForm.
  5. Adicione um controle CommandButton ao UserForm.
  6. Clique duas vezes no controle de CommandButton toopen a janela de código para o controle CommandButton .
  7. Na janela código, digite o seguinte código para o evento Click CommandButton1 :
    Private Sub CommandButton1_Click()    Dim MyRange As String    MyRange = RefEdit1.Value    Range(MyRange).Value = "test"    Unload MeEnd Sub
  8. No menu Executar , clique em RunSub/UserForm.

    O UserFormappears.
  9. Clique no botão no controle RefEdit .

    Observe que recolhe o UserForm.
  10. Selecionar um intervalo de células, como a1: a5 e, em seguida, clique em thebutton no controle RefEdit para expandir o UserForm.
  11. Clique em CommandButton1.
O UserForm fecha e as células que você selecionou agora contêm a palavra "teste".

Para obter informações adicionais sobre o controle RefEdit, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:
213776 XL2000: Como utilizar o controle RefEdit com um UserForm

Controle de imagem

A finalidade do controle de imagem é exibir uma figura em um UserForm. Para atribuir uma imagem a um controle de imagem em tempo de execução, use a função LoadPicture .

Como carregar uma imagem em um controle de imagem

Para inserir um controle de imagem que solicita que você selecione uma imagem para carregar quando você clicar no controle de imagem , execute as seguintes etapas:
  1. Inicie o Excel e abra uma nova pasta de trabalho em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  3. No menu Inserir , clique emUserForm para inserir um UserForm na sua pasta de trabalho.
  4. Adicione um controle de imagem no UserForm.
  5. Clique duas vezes no controle de imagem para abrir a janela theCode para o controle de imagem .
  6. Na janela código, digite o seguinte código para o evento Click Image1 :
    Private Sub Image1_Click()    Dim fname As String        ' Display the Open dialog box.    fname = Application.GetOpenFilename(filefilter:= _            "Bitmap Files(*.bmp),*.bmp", Title:="Select Image To Open")        ' If you did not click Cancel...    If fname <> "False" Then        ' Load the bitmap into the Image control.        Image1.Picture = LoadPicture(fname)        ' Refresh the UserForm.        Me.Repaint    End IfEnd Sub
  7. No menu Executar , clique em RunSub/UserForm.

    O UserForm aparece.
  8. Clique no controle de imagem .

    O controle de imagem , o boxappears de diálogo Selecionar imagem para abrir , clique em Whenyou e, em seguida, você pode selecionar um arquivo de bitmap para inserir em thecontrol.
Para obter informações adicionais sobre o controle de imagem, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:
213732 XL2000: Usando a função LoadPicture com um controle de imagem

Informações adicionais

O Pesquisador de objetos

Uma lista completa de todas as propriedades e métodos para um comando específico está disponível no Pesquisador de objetos. Para localizar essas informações no Excel, execute essas etapas:
  1. No menu Ferramentas , aponte paraMacroe, em seguida, clique em BasicEditor Visual.
  2. No menu Exibir , clique em ObjectBrowser.
  3. Na caixa Pesquisar texto , digite o nome do controle que você deseja e, em seguida, clique em Pesquisar.
Para obter mais informações sobre como usar o Pesquisador de objetos no Editor do Visual Basic, clique em Ajuda do Microsoft Visual Basic no menu Ajuda , digite Pesquisador de objetos no Assistente do Office ou no Assistente de resposta e clique em Pesquisar para exibir o tópico.
Para obter informações adicionais sobre como instalar a Ajuda do Microsoft Excel em seu computador, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:
231946 OFF2000: Como adicionar ou remover um único programa do Office ou componente

Propriedades

ID do Artigo: 829070 - Última Revisão: 04/24/2016 00:41:00 - Revisão: 16.0

Microsoft Office Excel 2003, Microsoft Excel 2010, Microsoft Office Excel 2007, Excel 2016, Microsoft Excel 2013

  • kbprogramming kbfunctions kbhowtomaster kbhowto kbmt KB829070 KbMtpt
Comentários