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

O suporte para o Office 2003 terminou

A Microsoft terminou o suporte para o Office 2003 em 8 de Abril de 2014. Esta alteração afetou as suas atualizações de software e opções de segurança. Aprenda o que isto significa para si e como pode ficar protegido.

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

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. Inclui exemplos e Microsoft Visual Basic para macros Applications (VBA) que mostram como tirar partido das capacidades do UserForms e como utilizar os controlos de ActiveX™ que estão disponíveis para UserForms.

Uma introdução aos princípios básicos de UserForms descreve como apresentar UserForms, como ocultar temporariamente UserForms e como a dispensar UserForms. Também são mostrados como utilizar os eventos mais comuns que estão associados a UserForms — o Inicializar evento, o Clique em eventos e Terminar evento. Um ou mais dos seguintes exemplos demonstram como utilizar cada um dos seguintes controlos de ActiveX™ num UserForm:
  • Etiqueta controlo
  • Caixa de texto controlo
  • CommandButton controlo
  • Caixa de listagem controlo
  • Caixa de combinação controlo
  • Moldura controlo
  • Botão de opção controlo
  • Caixa de verificação controlo
  • ToggleButton controlo
  • TabStrip controlo
  • Várias páginas controlo
  • Barra de deslocamento controlo
  • SpinButton controlo
  • RefEdit controlo
  • Imagem controlo
INTRODUÇÃO
Este artigo descreve como utilizar o VBA para efectuar alterações em UserForms no Excel.
Mais Informação
A Microsoft fornece exemplos de programação apenas a título ilustrativo, sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação que está a ser demonstrada e com as ferramentas que são utilizadas para criar e depurar procedimentos. Técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.

Noções básicas de UserForm

Como apresentar um UserForm

A sintaxe que é utilizada para apresentar um UserForm programaticamente é o seguinte:
UserFormName. Mostrar
Para apresentar um UserForm denominado UserForm1, utilize o seguinte código:
UserForm1.Show
Pode carregar um UserForm memória sem efectivamente apresentá-la. Poderá demorar um UserForm complexo vários segundos até aparecer. Porque pode pré-carregar um UserForm na memória, pode decidir quando incorrer esta sobrecarga. Para carregar UserForm1 na memória sem apresentá-la, utilize o seguinte código:
Load UserForm1
Para apresentar o UserForm, tem de utilizar o métodoShow que foi apresentado anteriormente.

Como ocultar temporariamente um UserForm

Se pretende ocultar temporariamente um UserForm, utilize o métodoOcultar . Poderá ocultar um UserForm se a aplicação envolve mover entre UserForms. Para ocultar um UserForm, utilize o seguinte código:
UserForm1.Hide
Para obter informações adicionais, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
213747 XL2000: Como mover entre UserForms personalizado com botões de comando

Como remover um UserForm da memória

Para remover um UserForm da memória, utilize a instrução deDescarregar . Para descarregar um UserForm denominado UserForm1, utilize o seguinte código:
Unload UserForm1
Se descarregar um UserForm num procedimento de evento que está associado um UserForm ou que está associado um controlo num UserForm (por exemplo, clique num controloCommandButton ), pode utilizar "Me" palavra-chave em vez do nome de UserForm. Para utilizar "Me" palavra-chave para descarregar um UserForm, utilize o seguinte código:
Unload Me

Como utilizar o UserForm eventos

UserForms suporta muitos eventos predefinidos que pode anexar procedimentos VBA para. Quando ocorre o evento, o procedimento que é anexado ao evento é executado. Uma única acção é efectuada por um utilizador pode iniciar a vários eventos. Entre mais frequentemente utilizados eventos para um UserForm são o evento de inicialização , o evento Click e o evento Terminate .

Nota Um módulo de Visual Basic que contém um procedimento de evento poderá ser designado um módulo "atrás" UserForm. Um módulo que contém os procedimentos de evento não é visível na colecção de módulos da janela do Explorador de projecto do Visual Basic Editor. Tem a faça duplo clique sobre o corpo de um UserForm para visualizar o módulo de código UserForm.

Como aplicar um véu UserForm eventos

Para aplicar um véu UserForm eventos, siga estes passos:
  1. Crie um novo livro no Excel.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Faça duplo clique UserForm para apresentar a janela de theCode para UserForm.
  5. No módulo, escreva 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 Run menu, clique em RunSub/UserForm.
Quando o UserForm é carregado em primeiro lugar, a macro utiliza o evento de inicialização para alterar a propriedade de legenda do UserForm "Eventos de eventos de eventos!" e a propriedade BackColor a azul escuro.

Quando clica em UserForm, iniciar o evento de clique . O evento Click redimensiona UserForm. Uma vez que criou um procedimento para o evento de Redimensionar , receberá duas caixas de mensagem depois de clicar em UserForm. O evento Redimensionar ocorre duas vezes, uma vez que o código de evento Click altera a propriedade de largura e a propriedade altura do UserForm.

Fechar o UserForm inicia o evento QueryClose . O evento QueryClose apresenta uma caixa de mensagem que contém a legenda que emitiu o UserForm no código para o evento inicializar . Pode utilizar o evento QueryClose quando se pretende executar um determinado conjunto de acções, se o utilizador fecha o UserForm.

O evento Terminate , em seguida, gera uma caixa de mensagem que indica que a legenda do UserForm é UserForm1. O evento Terminate ocorre depois do UserForm é removido da memória e a legenda do UserForm regressa ao estado original.

Como impedir que um UserForm ser fechadas utilizando o botão Fechar

Quando executa um UserForm, é adicionado um botão Fechar no canto superior direito da janela UserForm. Se pretender impedir que o UserForm que está a ser fechado, utilizando o botão Fechar , tem de aplicar um véu o evento QueryClose .

O evento QueryClose ocorre apenas antes do UserForm é descarregado da memória. Utilize o argumento de CloseMode do evento QueryClose para determinar a forma como o UserForm está fechado. O valor de vbFormControlMenu para o argumento CloseMode indica que foi clicado no botão Fechar . Para manter o UserForm activa, defina o argumento de Cancelar o evento QueryClose como True. Para utilizar o evento QueryClose para impedir que um UserForm ser fechadas utilizando o botão Fechar , siga estes passos:
  1. Crie um novo livro no Excel.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um CommandButton controlo UserForm.
  5. Faça duplo clique UserForm para apresentar a janela de theCode para UserForm.
  6. Na janela de código, escreva 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 Run menu, clique em RunSub/UserForm.
UserForm não é fechado quando clica no botão Fechar . Tem de clicar no controlo CommandButton para fechar o UserForm.

Para obter informações adicionais, clique nos números de artigo que se segue para visualizar os artigos na Microsoft Knowledge Base:
207714 XL2000: Erros de tempo de execução utilizando UserForms colecção
211527 XL2000: Não é possível arrastar o controlo de UserForm para uma folha de cálculo
211868 XL2000: Erro execução da macro que insere o controlo no UserForm
213582 XL2000: Problemas quando utilizar a macro para adicionar controlo UserForm
213583 XL2000: Não é possível mostrar UserForms noutros projectos
213736 XL2000: Como determinar a chave premidas juntamente com o botão do rato
213744 XL2000: Como ocultar temporariamente um UserForm
213747 XL2000: Como mover entre UserForms personalizado com botões de comando
213749 XL2000: Como utilizar um UserForm para introdução de dados
213768 XL2000: Como dinamicamente redimensionar um formulário de utilizador
213774 XL2000: Como criar um ecrã de arranque com um UserForm

Código VBA

O Excel inclui quinze controlos diferentes que podem ser utilizados em UserForms. Esta secção contém vários exemplos que utilizem estes controlos de forma programática.

Nota O código VBA que está incluído neste artigo não contém exemplos que afectam todas as propriedades e eventos para os controlos. Se for necessário, pode utilizar a janela de propriedades para ver uma lista das propriedades que estão disponíveis para um controlo. Para ver uma lista de propriedades, no menu Ver , clique em Properties Window.

Como utilizar o modo de estrutura para controlos de edição

Quando utiliza o Editor do Visual Basic para criar uma caixa de diálogo, está a utilizar modo de estrutura. No modo de estrutura, pode editar controlos e pode alterar as propriedades de um controlo num UserForm na janela Propriedades. Para visualizar a janela de propriedades, no menuVer , clique em Properties Window.

Nota Controlos não respondem a eventos enquanto estiver no modo de estrutura. Quando executa uma caixa de diálogo para a visualizar a forma como os utilizadores vejam, o programa está no modo de execução. As alterações que fizer às propriedades de um controlo no modo de execução não são mantidas quando o UserForm é descarregado da memória.

Nota Controlos responder a eventos no modo de execução.

Como fazer referência a um controlo num Formulário de Utilizador

Como se refere aos controlos programaticamente depende do tipo de folha de módulo do Visual Basic que executa o código. Se estiver a executar o código de um módulo geral, a sintaxe é a seguinte:
UserFormName.Controlname.Property = Valor
Por exemplo, se pretender definir a propriedade detexto de um controlo de caixa de texto denominado Texto1 sobre um UserForm denominado UserForm1 ao valor do João, utilize o seguinte código:
UserForm1.TextBox1.Text = "Bob"
Se o código é um procedimento que é iniciado por um evento de um controlo ou o UserForm, não tem de consultar o nome do UserForm. Em vez disso, utilize o seguinte código:
TextBox1.Text = "Bob"
Quando anexar o código a um objecto, o código está associado a um dos eventos desse objecto. Em muitos dos exemplos neste artigo, anexar o código para o eventoClick do objecto CommandButton .

Controlos de etiqueta

Controlos de etiqueta são principalmente utilizados para descrever outros controlos num UserForm. Um controlo de etiqueta não pode ser editado pelo utilizador enquanto o UserForm está em execução. Utilize a propriedade Caption para definir ou devolver o texto num controlo de rótulo . Outras propriedades utilizadas frequentemente para formatar um controlo de rótulo incluem as propriedades de tipo de letra e a cor de primeiro plano .

Como utilizar uma instrução com para formatar um controlo de etiqueta

Para utilizar a instrução WITH para alterar as propriedades de um controlo de etiqueta , siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo de rótulo UserForm.
  5. Adicione um CommandButton controlo UserForm.
  6. Faça duplo clique no CommandButton controlo toopen a janela de código para o UserForm.
  7. Na janela de código, escreva o seguinte código para o evento Click de 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 Run menu, clique em RunSub/UserForm.
  9. Clique no CommandButton.
O texto "Esta é a etiqueta exemplo 1" aparece no controlo de etiqueta em negrito Times New Roman com um tamanho de tipo de letra de 14.

Controlos de caixa de texto

Controlos de caixa de texto são frequentemente utilizados para reunir entradas de um utilizador. A propriedade de texto contém a entrada que é efectuada num controlo de caixa de texto .

Como utilizar um controlo de caixa de texto para validar uma palavra-passe

Se definir a propriedade de PasswordChar de um controlo de caixa de texto , torna-se um controlo de "mascaradas-editar". Cada carácter que é escrito no controlo de caixa de texto está substituído visualmente pelo carácter que especificar. Para utilizar um controlo de caixa de texto para validar uma palavra-passe, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo de caixa de texto para o UserForm.
  5. No menu Ver , clique emPropriedades para tornar a janela de propriedades visível.
  6. Na propriedade PasswordChar do controlo de caixa de texto , escreva *.

    Nota Está a alterar o valor para um asterisco.
  7. Adicione um CommandButton controlo UserForm.
  8. Faça duplo clique no CommandButton controlo toopen a janela de código para o UserForm.
  9. Na janela de código, escreva o seguinte código para o evento Click de 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 Run menu, clique em RunSub/UserForm.
  11. Escreva a palavra-passe UserForm no controlo de caixa de texto .
  12. Clique no CommandButtonde controlo.
Neste exemplo, a palavra-passe é "userform". Se escrever uma palavra-passe incorrecta, é apresentada uma caixa de mensagem que indica que a palavra-passe está incorrecta, o controlo de caixa de texto está desmarcado e, em seguida, pode voltar a escrever a palavra-passe. Quando escreve uma palavra-passe correcta, recebe uma mensagem de boas-vindas e UserForm está fechado.

Para obter informações adicionais, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
213555 XL2000: Nenhuma propriedade de validação de dados para UserForm caixas de texto

Controlos CommandButton

Pode utilizar um controlo CommandButton para iniciar um procedimento VBA. O procedimento VBA, normalmente, é anexado ao evento do controlo CommandButtonclique em . Para utilizar o controlo CommandButton que executa um procedimento quando ocorre o evento de clique , siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um CommandButton controlo UserForm.
  5. Faça duplo clique no CommandButton controlo todisplay a janela de código para o UserForm.
  6. Na janela de código, escreva 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 Run menu, clique em RunSub/UserForm.
A cor de fundo do controlo CommandButton1 muda sempre que clicar no mesmo.

Para obter informações adicionais sobre o controlo de CommandButton, clique nos números de artigo que se segue para visualizar os artigos na Microsoft Knowledge Base:
213572 XL2000: Clicando em ' Cancelar ' botão não pode dispensar UserForm
213743 XL2000: Como definir o botão de comando predefinido de um UserForm

Controlos de caixa de listagem

O objectivo do controlo de caixa de listagem deve apresentar ao utilizador uma lista de itens para seleccionar a partir. Pode armazenar a lista de item para um controlo de caixa de listagem numa folha de cálculo do Excel. Para preencher um controlo de caixa de listagem com um intervalo de células numa folha de cálculo, utilize a propriedade OrigemDaLinha . Quando utiliza a propriedade MultiSelect , pode definir um controlo ListBox para aceitar várias selecções.

Como obter o item actualmente seleccionado a partir do controlo de caixa de listagem

Utilize a propriedade de valor de um controlo de caixa de listagem para devolver o item actualmente seleccionado. Para devolver o item seleccionado actualmente numa controlo de caixa de listagem de selecção única, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. Nas células a1: a5 na Folha1, escreva os valores que pretende que touse para preencher o controlo de caixa de listagem .
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  4. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  5. Adicione um controlo ListBox no UserForm.
  6. Faça duplo clique sobre o todisplay de controlo de caixa de listagem a janela de código para o controlo de caixa de listagem .
  7. Na janela de código, escreva o seguinte código para o evento ListBox1 clique :
    Private Sub ListBox1_Click()    MsgBox ListBox1.ValueEnd Sub 
  8. No Run menu, clique em RunSub/UserForm.
Quando clica num item na lista, aparece uma caixa de mensagem com o item actualmente seleccionado.

Como obter os itens seleccionados num controlo de caixa de listagem seleccionar múltiplas

Para determinar os itens seleccionados num controlo de caixa de listagem , seleccione vários, tem de loop em todos os itens na lista e, em seguida, consultar a propriedade seleccionado . Para devolver os itens actualmente seleccionados num controlo de caixa de listagem , seleccione vários, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. Nas células a1: a5 na Folha1, escreva os valores que pretende que touse para preencher o controlo de caixa de listagem .
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  4. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  5. Adicione um controlo ListBox no UserForm.
  6. No menu Ver , clique emPropriedades para ver a janela de propriedades.
  7. Escreva os valores que são indicados para as seguintes propriedades de controlo de caixa de listagem :
       Property	   Value   -----------     -----------------------   MultiSelect	   1 - frmMultiSelectMulti   RowSource	   Sheet1!A1:A8
  8. Adicione um CommandButton controlo UserForm.
  9. Faça duplo clique no CommandButton controlo todisplay a janela de código para o UserForm.
  10. Na janela de código, escreva o seguinte código para o evento Click de 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 Run menu, clique em RunSub/UserForm.
  12. Seleccione um ou mais itens na lista.
  13. Clique em CommandButton1.
Depois de clicar em CommandButton1, cada item que seleccionou no controlo de caixa de listagem aparece numa caixa de mensagem separada. Depois de todos os itens seleccionados são apresentados numa caixa de mensagem, UserForm é fechada automaticamente.

Como utilizar a propriedade OrigemDaLinha para preencher um controlo ListBox com células numa folha de cálculo

Para utilizar a propriedade OrigemDaLinha para preencher um controlo de caixa de listagem de um intervalo de células numa folha de cálculo, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. Nas células a1: a5 na Folha1, escreva os valores que pretende que touse para preencher o controlo de caixa de listagem .
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  4. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  5. Adicione um controlo ListBox no UserForm.
  6. Adicione um CommandButton controlo UserForm.
  7. Faça duplo clique no CommandButton controlo todisplay a janela de código para o UserForm.
  8. Na janela de código, escreva o seguinte código para o evento Click de CommandButton1 :
    Private Sub CommandButton1_Click()    ListBox1.RowSource = "=Sheet1!A1:A5"End Sub 
  9. No Run menu, clique em RunSub/UserForm.

    NotaListBox1 não contém quaisquer valores.
  10. Clique em CommandButton1.
ListBox1 é povoada com os valores nas células a1: a5 na Folha1.

Como preencher um controlo de caixa de listagem com valores numa matriz

Este exemplo mostra como preencher um controlo de caixa de listagem com uma variável de matriz. Tem de atribuir os valores da matriz para o item de um controlo ListBox ao mesmo tempo. Normalmente, este processo requer a utilização de uma estrutura de loop, por exemplo, um para... Próxima ciclo. Para preencher um controlo de caixa de listagem com uma variável de matriz, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo ListBox no UserForm.
  5. No menu Inserir , clique emmódulo para inserir uma folha de módulo.
  6. Na janela de código, escreva 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 de PopulateListBox cria uma matriz simple e, em seguida, adiciona os itens na matriz para o controlo de caixa de listagem , utilizando o método AddItem . Em seguida, aparece o UserForm.

Como utilizar um intervalo horizontal de células numa folha de cálculo para preencher um controlo de caixa de listagem

Se definir a propriedade OrigemDaLinha de um controlo de caixa de listagem a um intervalo horizontal de células, apenas o primeiro valor é apresentado no controlo de caixa de listagem .

Para preencher um controlo de caixa de listagem de um intervalo horizontal de células utilizando o método AddItem , siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. Nas células a1: E1 na Folha1, escreva os valores que pretende que touse para preencher o controlo de caixa de listagem .
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  4. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  5. Adicione um controlo ListBox no UserForm.
  6. No menu Inserir , clique emmódulo para inserir uma folha de módulo.
  7. Na janela de código, escreva 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 células A1:E5 na Folha1, adicionar os valores ao ListBox1 uma cada vez.

NotaListBox1 não está ligado a A1:E5 de células na Folha1.

Como retornar vários valores de um controlo de caixa de listagem está dependente de várias colunas de dados

Pode formatar controlos de caixa de listagem para apresentar mais do que uma coluna de dados. Isto significa que o controlo de caixa de listagem apresenta mais de um item em cada linha da lista. Para devolver vários valores do item seleccionado na lista, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. Escreva os seguintes dados nas células que estã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 Visual BasicEditor.
  4. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  5. Adicione um controlo de rótulo UserForm.
  6. Adicione um controlo ListBox no UserForm.
  7. Com o botão direito da caixa de listageme, em seguida, clique emPropriedades.
  8. Escreva ou seleccione os valores que são indicados para propriedades de thefollowing do controlo de caixa de listagem , conforme listado na seguinte tabela:
       Property       Value   ----------------------------   BoundColumn     1   ColumnCount     3   ColumnHeads     True   RowSource       Sheet1!A2:A5
  9. Faça duplo clique sobre o todisplay de controlo de caixa de listagem a janela de código para o controlo de caixa de listagem .
  10. Na janela de código, escreva 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 Run menu, clique em RunSub/UserForm.
Quando clica numa entrada no controlo de caixa de listagem , a etiqueta é alterada para apresentar todos os três itens essa entrada.

Como remover todos os itens de um controlo de caixa de listagem está dependente de uma folha de cálculo

Para remover todos os itens de um controlo de caixa de listagem que esteja vinculado a uma folha de cálculo, desmarque o valor que é armazenado na propriedade OrigemDosRegistos . Para remover itens de um controlo de caixa de listagem está dependente de uma folha de cálculo, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. Nas células a1: a5 na Folha1, escreva os valores que pretende que touse para preencher o controlo de caixa de listagem .
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  4. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  5. Adicione um controlo ListBox no UserForm.
  6. Com o botão direito do controlo de caixa de listagem e thenclick Propriedades.
  7. Na propriedade OrigemDosRegistos , escreva Folha1! A1: A5.
  8. Adicione um CommandButton controlo UserForm.
  9. Faça duplo clique no CommandButton controlo todisplay a janela de código para o controlo de CommandButton .
  10. Na janela de código, escreva o seguinte código para o evento Click de CommandButton1 :
    Private Sub CommandButton1_Click()    ListBox1.RowSource = ""End Sub
  11. No Run menu, clique em RunSub/UserForm.

    O controlo de caixa de listagemque adicionou ao UserForm é povoado com os valores que introduziu na Folha1.
  12. Clique em CommandButton1.
Todos os itens são removidos do ListBox1.

Como remover todos os itens de um controlo de caixa de listagem que não está ligado a uma folha de cálculo

Não existe nenhum comando VBA único, que remove todos os itens de um controlo ListBox se a lista não estiver ligada a uma folha de cálculo. Para remover todos os itens de um controlo de caixa de listagem é preenchido a partir de uma matriz de Visual Basic, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo ListBox no UserForm.
  5. No menu Inserir , clique emmódulo para inserir uma folha de módulo.
  6. Na janela de código, escreva 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 CommandButton controlo UserForm.
  8. Faça duplo clique no CommandButton controlo todisplay a janela de código para o controlo de CommandButton .
  9. Na janela de código, escreva o seguinte código para o evento Click de 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 controlo de caixa de listagem é 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 controlo de caixa de listagem, clique nos números de artigo que se segue para visualizar os artigos na Microsoft Knowledge Base:
161598 OFF: Como adicionar dados a uma caixa de combinação ou caixa de listagem no Excel ou Word
211446 XL2000: A propriedade TextColumn apresenta apenas a primeira coluna
211896 XL2000: Como simular combinação listagem / edição controlo para UserForms
211899 XL2000: Problemas com a configuração cabeçalhos de coluna no controlo de caixa de listagem
213721 XL2000: Como remover todos os itens a partir de uma caixa de listagem ou caixa de combinação
213722 XL2000: Como utilizar a propriedade TextColumn
213723 XL2000: Como devolver valores a partir de uma caixa de lista que mostra várias colunas
213746 XL2000: Como preencher o controlo de caixa de listagem com vários intervalos
213748 XL2000: Como preencher uma caixa de listagem com base na outra caixa de lista
213752 XL2000: Utilizando o método AddItem provoca um erro quando RowSource está dependentes de dados
213756 XL2000: Utilizar o método de RemoveItem com controlo de caixa de listagem ou caixa de combinação
213759 XL2000: Como determinar quais os itens são seleccionados numa caixa de listagem

Controlos de caixa de combinação

Pode utilizar o controlo de caixa de combinação como uma caixa de listagem pendente ou como uma caixa de combinação, onde pode seleccionar um valor numa lista ou escreva um novo valor. A propriedade de estilo determina se o controlo de caixa de combinação funciona como uma caixa de listagem pendente ou uma caixa de combinação.

Nota Também podem ser aplicados a todos os exemplos na secção anterior para o controlo de caixa de listagem para o controlo de caixa de combinação , excepto o exemplo de "Como obter os itens seleccionados num controlo de caixa de listagem, seleccione vários".

Como adicionar um novo item à lista, se o controlo de caixa de combinação não está ligado a uma folha de cálculo

Quando escreve um valor que ainda não estiver na lista na caixa de combinação , pode pretender adicionar o novo valor à lista. Para adicionar o novo valor que escreveu na caixa de combinação se o controlo de caixa de combinação não está vinculado à folha de cálculo, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo de caixa de combinação UserForm.
  5. No menu Inserir , clique emmódulo para inserir uma folha de módulo.
  6. Na janela de código, escreva 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 CommandButton controlo UserForm.
  8. Faça duplo clique no CommandButton controlo todisplay a janela de código para o controlo de CommandButton .
  9. Na janela de código, escreva o seguinte código para o evento Click de 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 controlo de caixa de combinação é preenchido e, em seguida, aparece o UserForm.
  11. No controlo de caixa de combinação , escreva Mangas (ou qualquer valor thatis não estiver na lista).
  12. Clique em CommandButton1.
O novo valor que escreveu agora aparece no fim da lista.

Como adicionar um novo item à lista, se o controlo de caixa de combinação estiver ligado a uma folha de cálculo

Quando um utilizador escreve um valor que ainda não estiver na lista na caixa de combinação , pode pretender adicionar o novo valor à lista. Para adicionar o novo valor que escreveu no controlo de caixa de combinação à lista, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. Nas células a1: a5 na Folha1, escreva os valores que pretende que touse para preencher o controlo de caixa de combinação .
  3. Seleccione as células a1: a5 na Folha1.
  4. No menu Inserir , aponte para onomee, em seguida, clique em Definir.

    Na caixanomes no livro , escreva ListRange e, em seguida, clique em OK. Este procedimento cria o nome definido ListRange. Pode utilizar o nome definido ListRange para efeito de vincular a propriedade OrigemDaLinha da caixa de combinação para a folha de cálculo.
  5. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  6. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  7. Adicione um controlo de caixa de combinação UserForm.
  8. Nas Propriedades de ComboBox1, escreva Folha1! ListRange como a propriedadeOrigemDaLinha .
  9. Adicione um CommandButton controlo UserForm.
  10. Faça duplo clique no CommandButton controlo todisplay a janela de código para o controlo de CommandButton .
  11. Na janela de código, escreva o seguinte código para o evento Click de 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 Run menu, clique em RunSub/UserForm.

    UserForm aparece na Folha1.
  13. No controlo de caixa de combinação , escreva um valor que ainda não esteja na lista.
  14. Clique em CommandButton1.
O novo item que escreveu na caixa de combinação é adicionado à lista e, na lista que o controlo de caixa de combinação está dependente de é expandida para incluir células A1:A6.

Como apresentar a lista de um controlo ComboBox quando aparece o UserForm

Por vezes, poderá ser útil apresentar a lista de um controlo de caixa de combinação quando um UserForm aparece primeiro. O exemplo seguinte utiliza o evento de activação de UserForm. Para apresentar a lista de um controlo de caixa de combinação , siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. Nas células a1: a5 na Folha1, escreva os valores que pretende que touse para preencher o controlo de caixa de combinação .
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  4. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  5. Adicione um controlo de caixa de combinação UserForm.
  6. Nas Propriedades de ComboBox1, escreva Folha1! A1: A5 como a propriedadeOrigemDaLinha .
  7. Faça duplo clique UserForm para apresentar a janela de theCode para UserForm.
  8. Na janela de código, escreva o seguinte código para o evento CommandButton clique :
    Private Sub UserForm_Activate()           ComboBox1.DropDown       End Sub
  9. No Run menu, clique em RunSub/UserForm.
UserForm aparece na Folha1 e pode ver a lista para ComboBox1.

Como visualizar a lista de um controlo de caixa de combinação quando faz uma selecção num outro controlo de caixa de combinação

Para apresentar a lista de um controlo ComboBox automaticamente quando é efectuada uma escolha noutro controlo de caixa de combinação , siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. Em a1: de células a10 na Folha1, escreva os valores que pretende que touse para preencher o controlo de caixa de combinação .
  3. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  4. No menu Inserir , clique emmódulo.
  5. Na janela de código para o módulo, escreva o seguinte código:
    Sub DropDown_ComboBox()    UserForm1.ComboBox2.DropDownEnd Sub
  6. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  7. Adicione um controlo de caixa de combinação UserForm.
  8. Nas Propriedades de ComboBox1, escreva Folha1! A1: A5 como a propriedadeOrigemDaLinha .
  9. Faça duplo clique no controlo de caixa de combinação para openthe a janela de código para o controlo de caixa de combinação .
  10. Na janela de código para o controlo de caixa de combinação , escreva o seguinte código para o evento ComboBox clique :
    Private Sub ComboBox1_Click()    Application.OnTime Now, "DropDown_ComboBox"End Sub
  11. Adicione um segundo controlo de caixa de combinação UserForm.
  12. Nas Propriedades de ComboBox2, escreva Folha1! A6:A10 como a propriedadeOrigemDaLinha .
  13. No Run menu, clique em RunSub/UserForm.
Quando clica num item na lista de ComboBox1 , a lista para ComboBox2 aparece automaticamente.

Para obter informações adicionais sobre o controlo de caixa de combinação, clique nos números de artigo que se segue para visualizar os artigos na Microsoft Knowledge Base:
161598 OFF: Como adicionar dados a uma caixa de combinação ou caixa de listagem no Excel ou Word
211446 XL2000: A propriedade TextColumn apresenta apenas a primeira coluna
211899 XL2000: Problemas com a configuração cabeçalhos de coluna no controlo de caixa de listagem
213717 XL2000: Erro de tempo de execução utilizando o método de lista pendente com uma caixa de combinação
213718 XL2000: Como visualizar uma lista de caixa de combinação quando um UserForm é apresentado
213721 XL2000: Como remover todos os itens a partir de uma caixa de listagem ou caixa de combinação
213722 XL2000: Como utilizar a propriedade TextColumn
213752 XL2000: Utilizando o método AddItem provoca um erro quando dados RowSource está associado
213756 XL2000: Utilizar o método de RemoveItem com controlo de caixa de listagem ou caixa de combinação

Controlo do tipo moldura

Utilize um moldura de controlo para agrupar itens relacionados logicamente um UserForm. Moldura controlos são frequentemente utilizados para agrupar controlos de botão de opção .

Como efectuar um ciclo através de todos os controlos num controlo moldura

Para utilizar um para cada... Próxima ciclo para aceder a todos os controlos num controlo de pacote , siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo de moldura a UserForm.
  5. Adicione um controlo de botão de opção para o controlo da moldura .

    Repita este passo para adicionar mais dois controlos de botão de opção no controlo Frame .
  6. Faça duplo clique no controlo de moldura para abrir a janela de theCode para o controlo da moldura .
  7. Na janela de código, escreva o seguinte código para o evento Frame Click :
    Private Sub Frame1_Click()    Dim Ctrl As Control        For Each Ctrl In Frame1.Controls        Ctrl.Enabled = Not Ctrl.Enabled    NextEnd Sub
  8. No Run menu, clique em RunSub/UserForm.
  9. No UserForm, clique no controlo da moldura.
A primeira vez que clicar no controlo da moldura , todos os controlos do controlo da moldura não estão disponíveis. Se clicar novamente no controlo de moldura , os controlos estão novamente disponíveis.

Controlo de botão de opção

Pode utilizar grupos de controlos de botão de opção para efectuar uma selecção entre um grupo de opções. Pode utilizar qualquer uma das seguintes técnicas para controlos de botão de opção do grupo:
  • Controle do tipo moldura
  • Propriedade GroupName
Nota O valor de no , o valor Sim e o valor True indicam que um botão de opção está seleccionada. O valor de Terminar , o valor de No e o valor False indicam que um botão de opção não está seleccionada.

Como determinar o controlo de botão de opção é seleccionado quando os controlos de botão de opção estão num controlo moldura

Quando agrupar botões de opção controlos utilizando um controlo de moldura , pode determinar o controlo de botão de opção está seleccionado por ciclo através de todos os controlos do controlo da moldura e verificando a propriedade de valor de cada controlo. Para determinar o controlo de botão de opção estiver seleccionado, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo de moldura a UserForm.
  5. Adicione um controlo de botão de opção para o controlo da moldura .

    Repita este passo para adicionar mais dois controlos de botão de opção no controlo Frame .
  6. Adicione um controlo CommandButton no UserForm fora do controlo da moldura .
  7. Faça duplo clique no CommandButton controlo todisplay a janela de código para o UserForm.
  8. Na janela de código, escreva o seguinte código para o evento Click de 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 Run menu, clique em RunSub/UserForm.
  10. No UserForm, clique num controlo de botão de opção e, em seguida, clique emCommandButton1.
Aparece uma caixa de mensagem que contém a legenda do controlo de botão de opção actualmente seleccionado.

Como determinar o controlo de botão de opção está seleccionado

O exemplo seguinte tem por objectivo determinar o controlo de botão de opção está seleccionado na grupo1. Para criar um UserForm que tenha dois grupos de controlos de botão de opção , siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo de moldura a UserForm.
  5. Adicione um controlo de botão de opção no controlo Frame .

    Repita este passo para adicionar mais dois controlos de botão de opção no controlo Frame .
  6. Para cada controlo de botão de opção , escreva Grupo1 na propriedade GroupName .
  7. Repita os passos 4 e 5 para criar um segundo controlo moldura que contém três controlos de botão de opção .
  8. Para cada controlo de botão de opção no segundo controlo Frame , escreva Grupo2 na propriedade GroupName .
  9. Adicione um controlo CommandButton no UserForm fora os controlos de moldura .
  10. Faça duplo clique no CommandButton controlo todisplay a janela de código para o UserForm.
  11. Na janela de código, escreva o seguinte código para o evento Click de 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 Run menu, clique em RunSub/UserForm.
  13. No UserForm, clique num controlo de botão de opção do grupo1 e, em seguida, clique emCommandButton1.
Aparece uma caixa de mensagem que contém a legenda do controlo de botão de opção actualmente seleccionado.

Para obter informações adicionais sobre os controlos de botão de opção, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
213724 XL2000: Problemas utilizando a propriedade TripleState para botão de opção

Controlo de caixa de verificação

Pode utilizar um controlo de caixa de verificação para indicar um valor VERDADEIRO ou FALSO. Um controlo de caixa de verificação que é apresentada com uma marca de verificação indica um valor True. Caixa de verificação que aparece com nenhuma marca de verificação indica um valor False. Se o valor da propriedade TripleState é Verdadeiro, um controlo de caixa de verificação também pode ter um valor Nulo. Um controlo de caixa de verificação que tem um valor de Nulo parece não estar disponível.

Nota O valor de no , o valor Sim e o valor True indicam que um controlo de caixa de verificação está seleccionado. O valor de Terminar , o valor de No e o valor False indicam que um controlo de caixa de verificação está desmarcado.

Como verificar o valor de um controlo de caixa de verificação

Para utilizar a propriedade Value para devolver o valor actual de um controlo de caixa de verificação , siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo de caixa de verificação para UserForm.
  5. Na lista de propriedades para a caixa de Verificação1, seleccione VERDADEIRO como a propriedade TripleState .
  6. Faça duplo clique sobre o todisplay de controlo de caixa de verificação a janela de código para o controlo de caixa de verificação .
  7. Na janela de código, escreva o seguinte código para o evento de Alteração de caixa de Verificação1 :
    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 Run menu, clique em RunSub/UserForm.
Quando clicar no controlo de caixa de verificação , a legenda do controlo de caixa de verificação for alterado para reflectir o valor actual.

Controlo de ToggleButton

Um controlo ToggleButton tem o mesmo aspecto como um controlo CommandButton até que clique em. Quando clica num controlo de ToggleButton , parece ser premidas ou empurradas para baixo. A propriedade de valor de um controlo ToggleButton é Verdadeiro quando o botão é seleccionado e False quando o botão não está seleccionado. Se o valor da propriedade TripleState é Verdadeiro, um controlo ToggleButton também pode ter um valor Nulo. Um controlo de ToggleButton que tem um valor de Nulo parece não estar disponível.

Nota O valor de no , o valor Sim e o valor True indicam que um controlo ToggleButton está seleccionado. O valor de Terminar , o valor de No e o valor False indicam que um controlo ToggleButton não está seleccionado.

Como obter o valor de um controlo ToggleButton

Para obter o valor de um controlo ToggleButton , siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo ToggleButton no UserForm.
  5. Adicione um controlo de rótulo UserForm.
  6. Faça duplo clique sobre o toopen de controlo ToggleButton a janela de código para o controlo de ToggleButton .
  7. Na janela de código, escreva 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 Run menu, clique em RunSub/UserForm.
Quando clicar no controlo ToggleButton , a cor de fundo das alterações UserForm.

Como criar um grupo de controlos de ToggleButton mutuamente exclusivos

Este exemplo utiliza o evento SoltarOBotãoDoRato para definir uma variável e chama o procedimento ExclusiveToggleButtons . O procedimento ExclusiveToggleButtons determina o controlo de ToggleButton que está seleccionado e, em seguida, cancela os outros. Para criar um grupo de controlos de ToggleButton mutuamente exclusivos, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emmódulo.
  4. Na janela de código para o módulo, escreva 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 no livro.
  6. Adicione um controlo de moldura a UserForm.
  7. Adicione um controlo ToggleButton no controlo Frame .

    Repita este passo para adicionar dois controlos ToggleButton mais no controlo Frame .
  8. Faça duplo clique sobre o controlo da moldura à janela de código de displaythe para UserForm.
  9. Na janela de código para o módulo, escreva o seguinte codefor o evento ToggleButton SoltarOBotãoDoRato :
    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 Run menu, clique em RunSub/UserForm.
Quando clica num controlo de ToggleButton , o controlo de ToggleButton anteriormente seleccionado é cancelado.

Controlo de TabStrip

Utilize um controlo de TabStrip para visualizar diferentes conjuntos de informações para um conjunto de controlos.

Como controlar programaticamente um controlo de TabStrip

Para alterar a propriedade de cor de fundo de um controlo de imagem com base no separador que está seleccionado, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Editor do Visual Basic.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo de TabStrip a UserForm.
  5. Adicionar um controlo de imagem que abrange a base do controlo de TabStrip , mas que não abrange os separadores.
  6. No painel Propriedades de Image1, escreva& H000000FF & na propriedade BackColor .
  7. Faça duplo clique no controlo de TabStrip para openthe a janela de código para o controlo de TabStrip .
  8. Na janela de código, escreva o seguinte código para o evento de Alteração de 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 Run menu, clique em RunSub/UserForm.
A cor das alterações de controlo de imagem consoante a página no controlo do TabStrip que está activa.

Para obter informações adicionais sobre o controlo de TabStrip, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
213254 XL2000: Como utilizar o controlo de TabStrip num UserForm

Controlo com várias páginas

Utilize um controlo de várias páginas para trabalhar com uma grande quantidade de informações que podem ser ordenadas por várias categorias. Um controlo de várias páginas é constituído por um ou mais página objectos que cada um contém um conjunto diferente de controlos. Pode definir a página activa através de programação, definindo a propriedade de valor do controlo de várias páginas .

Como controlar programaticamente um controlo com várias páginas

Para adicionar um controlo de várias páginas e controlo do mesmo utilizando uma macro, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo de várias páginas UserForm.
  5. Adicione um controlo de rótulo a Página1 sobre o controlo de várias páginas .
  6. Adicione um controlo de caixa de texto a Página1 sobre o controlo de várias páginas .
  7. Relativa ao controlo de várias páginas , clique em Página2e, em seguida, repita os passos 5and 6 para adicionar um controlo de rótulo e um controlo de caixa de texto .
  8. Faça duplo clique no controlo de várias páginas para a janela de código de openthe para o controlo de várias páginas .
  9. Na janela de código, escreva o seguinte código para o evento de Alteração de 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 de código, escreva o seguinte código para o evento UserForm inicializar :
    Private Sub UserForm_Initialize()    ' Force Page1 to be active when UserForm is displayed.    MultiPage1.Value = 0    Label1.Caption = ""End Sub
  11. No Run menu, clique em RunSub/UserForm.

    No controlo de caixa de texto da Página1, escreva Ensaio. Quando está desmarcada no separador Página2 , TextBox2 de youclick, e a legenda do Label2 muda para a entrada que efectuou na Texto1 da Página1 ("teste").

Como criar uma interface de assistente utilizando um controlo com várias páginas

Quando uma tarefa requer vários passos incrementais, uma interface de assistente pode ser muito eficaz. Pode utilizar o controlo de várias páginas para criar uma interface de assistente em vez de utilizar vários UserForms. Neste exemplo manipula um controlo de várias páginas que tem três páginas. Um procedimento que é anexado ao evento de inicialização de UserForm desactiva Página2 e Page3 e força Página1 do controlo de várias páginas para estar activo.

Nota Quando indexar as páginas de um controlo de várias páginas utilizando a colecção de páginas , a primeira página na colecção é página zero. Este procedimento também define a legenda dos controlos CommandButton e desactiva o <> botão.

Nota O procedimento que é atribuído o evento Click de CommandButton1 controla a funcionalidade da <> botão. O procedimento que é atribuído o evento Click de CommandButton2 controla a funcionalidade da seguinte > botão. Para criar uma interface de assistente utilizando um controlo de várias páginas , siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo de várias páginas UserForm.
  5. Com o botão direito no separador Página1 e, em seguida, clique emNova página para adicionar Page3 para o controlo de várias páginas .
  6. Adicione um controlo CommandButton no UserForm que não é relativo ao controlo de várias páginas .

    Repita este passo para adicionar um segundo controlo CommandButton no UserForm.
  7. Faça duplo clique UserForm para abrir o Codewindow para UserForm.
  8. Na janela de código, escreva o seguinte código para o evento UserForm inicializar :
    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 Run menu, clique em RunSub/UserForm.
Quando clica em seguinte >, Página2 está activada e o <> botão fica disponível. Quando clica em seguinte > uma segunda vez, Page3 é activado e a legenda para CommandButton2 é alterado para "Concluir".

Controlo de barra de deslocamento

Pode utilizar um controlo de barra de deslocamento quando pretender alterar o valor que é apresentado, por outro controlo, como um controlo de etiqueta .

Como alterar um controlo de etiqueta que se baseia o valor de um controlo de barra de deslocamento

Para alterar a propriedade de legenda de um controlo de etiqueta para a definição actual da propriedade de valor de um controlo de barra de deslocamento , siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo de barra de deslocamento UserForm.
  5. Adicione um controlo de rótulo UserForm.
  6. Faça duplo clique no controlo de barra de deslocamento para a janela de código de openthe para o controlo de barra de deslocamento .
  7. Na janela de código, escreva o seguinte código para o evento de Alteração de ScrollBar1 :
    Private Sub ScrollBar1_Change()    Label1.Caption = ScrollBar1.ValueEnd Sub
  8. No Run menu, clique em RunSub/UserForm.
Quando se desloca utilizando o controlo de barra de deslocamento , Rótulo1 é actualizado com o valor actual do controlo barra de deslocamento .

Controlo de SpinButton

Um controlo de SpinButton , como um controlo de barra de deslocamento , é frequentemente utilizado para aumentar ou diminuir o valor de outro controlo, como um controlo de etiqueta . A propriedade SmallChange determina quanto o valor de um controlo de SpinButton é alterado quando é clicado.

Como adicionar um controlo de SpinButton que aumenta ou diminui uma data que é armazenado num controlo de caixa de texto

Para adicionar um controlo de SpinButton que aumenta ou diminui uma data que é armazenado num controlo de caixa de texto , siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo de SpinButton a UserForm.
  5. Adicione um controlo de caixa de texto para o UserForm.
  6. Faça duplo clique sobre o toopen de controlo de SpinButton a janela de código para o controlo de SpinButton .
  7. Na janela de código, escreva o seguinte código para o evento de SpinButton1 SpinUp :
    Private Sub SpinButton1_SpinUp()    TextBox1.Text = DateValue(TextBox1.Text) + 1End Sub
  8. Na janela de código, escreva o seguinte código para o evento SpinButton1 SpinDown :
    Private Sub SpinButton1_SpinDown()    TextBox1.Text = DateValue(TextBox1.Text) - 1End Sub
  9. Na janela de código, escreva o seguinte código para o evento UserForm inicializar :
    Private Sub UserForm_Initialize()    TextBox1.Text = DateEnd Sub
  10. No Run menu, clique em RunSub/UserForm.
Quando aparece o UserForm, a data actual aparece na Texto1. Quando clicar no controlo de SpinButton , a data é incrementado ou decrementado por um dia.

Neste exemplo, se alterar a propriedade SmallChange de SpinButton1, não afectará o número de dias que o movimento no Texto1 é alterado, quando clica em SpinButton1. O número de dias é determinado apenas com o procedimento que ligou ao acontecimento SpinUp e o evento SpinDown de SpinButton1.

Para obter informações adicionais sobre o controlo de SpinButton, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
213224 XL2000: exemplo de Visual Basic para a utilização de um botão giratório com uma data

Controlo RefEdit

O controlo RefEdit simula o comportamento das caixas de referência incorporadas no Excel. Pode utilizar a propriedade Value para obter o endereço da célula actual que estão armazenados num controlo RefEdit .

Como preencher um intervalo de células com base no intervalo que seleccionar utilizando o controlo de RefEdit

Para utilizar o controlo RefEdit para preencher células, siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo de RefEdit a UserForm.
  5. Adicione um CommandButton controlo UserForm.
  6. Faça duplo clique no CommandButton controlo toopen a janela de código para o controlo de CommandButton .
  7. Na janela de código, escreva o seguinte código para o evento Click de CommandButton1 :
    Private Sub CommandButton1_Click()    Dim MyRange As String    MyRange = RefEdit1.Value    Range(MyRange).Value = "test"    Unload MeEnd Sub
  8. No Run menu, clique em RunSub/UserForm.

    UserFormappears.
  9. Clique no botão do controlo de RefEdit .

    Repare que o UserForm fecha.
  10. Seleccione um intervalo de células como a1: a5 e, em seguida, clique em thebutton do controlo de RefEdit para expandir o UserForm.
  11. Clique em CommandButton1.
Fecha o UserForm e as células que seleccionou contêm agora a palavra "teste".

Para obter informações adicionais sobre o controlo de RefEdit, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
213776 XL2000: Como utilizar o controlo RefEdit com um UserForm

Controlo de imagem

É o objectivo do controlo da imagem apresentar uma imagem de um UserForm. Para atribuir uma imagem a um controlo de imagem em tempo de execução, utilize a função LoadPicture .

Como carregar uma imagem para um controlo de imagem

Para inserir um controlo de imagem que lhe pede para seleccionar uma imagem a carregar quando clicar no controlo de imagem , siga estes passos:
  1. Inicie o Excel e, em seguida, abra um novo livro em branco.
  2. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  3. No menu Inserir , clique emUserForm para inserir um UserForm no livro.
  4. Adicione um controlo de imagem no UserForm.
  5. Faça duplo clique sobre o controlo de imagem para abrir a janela de theCode para o controlo de imagem .
  6. Na janela de código, escreva o seguinte código para o evento Click de 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 Run menu, clique em RunSub/UserForm.

    UserForm aparece.
  8. Clique no controlo de imagem .

    Whenyou, faça clique sobre o controlo de imagem , boxappears de diálogo Seleccionar imagem para abrir , e, em seguida, pode seleccionar um ficheiro de mapa de bits para inserir em thecontrol.
Para obter informações adicionais sobre o controlo de imagem, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
213732 XL2000: Utilizar a função de LoadPicture com um controlo de imagem

Obter informações adicionais

O localizador de objectos

Uma lista completa de todas as propriedades e métodos para um comando específico está disponível no Localizador de objectos. Para localizar estas informações no Excel, siga estes passos:
  1. No menu Ferramentas , aponte paraMacroe, em seguida, clique em Visual BasicEditor.
  2. No menu Ver , clique em ObjectBrowser.
  3. Na caixa de Texto de procura , escreva o nome do controlo que pretende e, em seguida, clique em Procurar.
Para mais informações sobre como utilizar o Object Browser, no Editor do Visual Basic, clique em Ajuda do Microsoft Visual Basic no menu Ajuda , escreva Localizador de objectos no Assistente do Office ou o Assistente de respostas e, em seguida, clique em Procurar para visualizar o tópico.
Para obter informações adicionais sobre como instalar a ajuda do Microsoft Excel no computador, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
231946 OFF2000: Como adicionar ou remover um único programa ou componente Office

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 829070 - Última Revisão: 04/08/2016 09:53:00 - Revisão: 12.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