Table of contents
XML
TOC
Recolher sumário
Expandir sumário

Consultar objetos de controle guia no VBA

office 365 dev account|Última Atualização: 04/10/2017
|
1 Colaborador

Use um controle guia para apresentar várias páginas de informações sobre um único formulário. O controle guia é útil quando o formulário inclui informações que podem ser classificadas em duas ou mais categorias.

Em muitos aspectos, um controle guia funciona como os outros controles de um formulário e pode ser referido como um membro da coleção Controls de um formulário. Por exemplo, para fazer referência a um controle guia chamado TabControl1 em um formulário chamado Form1, você pode usar a seguinte expressão:

Form1.Controls!TabControl1

No entanto, como a coleção Controls é a coleção padrão do objeto Form, não é necessário fazer referência excplícita à coleção Controls. Ou seja, você pode omitir a referência à coleção Controls de uma esxpressão, como a seguinte:

Form1!TabControl1

Fazendo referência à coleção de páginas

O controle guia contém uma ou mais páginas. Cada página do controle guia é referenciado como um membro da coleção Pages do controle guia. Cada página da coleção Pages pode ser refernciada pela respectiva configuração de propriedade PageIndex (que reflete a posição da página na coleção, começando com 0) ou pela configuraçao de propriedade Name da página. Não há coleção padrão para o objeto TabControl, portanto, ao fazer referência aos itens na coleção Pages pelo respectivo valor de índice, ou às propriedades da coleção Pages, você deve fazer referência explícita à coleção Pages.

Por exemplo, para alterar o valor da propriedade Caption da primeira página de um controle guia chamado TabControl1, fazendo referência ao respectivo valor de índice na coleção Pages, use a seguinte instrução:

TabControl1.Pages(0).Caption = "First Page"

Uma vez que cada página é um membro da coleção Controls do formulário, faça referência somente a uma página pela respectiva propriedade Name, sem fazer referência ao nome do controle guia ou à respectiva coleção Pages. Por exemplo, para alterar o valor da propriedade Caption de uma página com o respectivo conjunto de propriedades Name para Page1, use a seguinte instrução:

Page1.Caption = "First Page"

Observação Quando um usuário ou código altera a propriedade PageIndex da página, a referência ao índice e à posição da página na ordem da página é alterada. Nesse caso, se desejar manter uma referência absoluta a uma página, faça referência à propriedade Name da página.

A coleção Pages possui uma propriedade, Count, que retorna o número de páginas de um controle guia. Observe que esta propriedade não uma propriedade do controle guia em si, mas da coleção Pages, de modo que você faça referência explícita à coleção. Por exemplo, para determinar o número de páginas no TabControl1, use a seguinte instrução:

TabControl1.Pages.Count

Fazendo referência e alterando a página atual

A propriedade padrão de um controle guia é Value, a qual retorna um número inteiro que identifica a página atual: 0 para a primeira página, 1 para a segunda página e assim por diante. A propriedade Value está disponível apenas no código VBA ou nas expressões. Ao fazer referência à propriedade Value no tempo de execução, você pode determinar as páginas que se encontram atualmente na parte superior. Por exemplo, a seguinte instrução retorna o valor da página atual do TabControl1:

TabControl1.Value

Observação Como a propriedade Value é a propriedade padrão de um controle guia, você não precisa fazer referência a ela explicitamente. Por isso, você pode omitir .Value do exemplo anterior.

Fazer referência à propriedade Value do controle guia no tempo de execução altera o foco da página especificada, tornando-a a página principal. Por exemplo, a seguinte instrução transfere o foco para a terceira página do TabControl1:

TabControl1 = 2

Isso é útil quando você define uma propriedade Style do controle guia para Nenhum (que não exibe guias) e pretende usar os botões de comando no formulário para determinar a página de foco. Para usar o botão de comando para exibir uma página, adicione um procedimento de evento ao evento OnClick do botão, que define a propriedade Value do controle guia para o número inteiro que identifica a página da propriedade.

Ao usar a propriedade Value com a coleção Pages, você pode definir propriedades no tempo de execução para a página que está na parte superior. Por exemplo, você pode ocultar a página atual e todos os respectivos controles, definindo a apropriedade Visible da página como False. A seguinte instrução oculta a página atual do TabControl1:

TabControl1.Pages(TabControl1).Visible = False

Cada página do controle guia possui uma propriedade PageIndex, que especifica a posição de uma página na coleção Pages, usando a mesma sequência de numeração que a propriedade Value do controle guia: 0 para a primeira página, 1 para a segunda página e assim por diante. Configurar o valor da propriedade PageIndex da página altera a ordem na qual as páginas são exibidas no controle guia. Por exemplo, se desejar tornar a página chamada Page1 a segunda página, você deve usar a seguinte instrução:

Page1.PageIndex = 1

A propriedade PageIndex normalmente é definida no tempo de design, em uma planilha de propriedades da página. Para definir a ordem da página, clique com o botão direito do mouse na borda do controle guia e, em seguida, clique em Ordem da página, no menu de atalho.

Fazendo referência a controles em uma página do controle guia

Os controles colocados em uma página do controle guia fazem parte da mesma coleção, assim como todos os controles do formulário. Por esse motivo, cada controle em uma página do controle guia deve ter um nome exclusivo em relação a todos os outros controles do mesmo formulário. Para fazer referência a controles em uma página do controle guia, use a mesma sintaxe para controles em um formulário sem um controle guia.

Forms!Employees!HomePhone

Como os controles de um formulário têm sua própria coleção Controls, você pode fazer referência aos controles do controle guia como membros da respectiva coleção Controls. Por exemplo, o seguinte código enumera (lista) todos os controles do controle guia no formulário Funcionários.

Sub ListTabControlControls()

   Dim tabCtl As TabControl
   Dim ctlCurrent As Control

On Error GoTo ErrorHandler

   ' Return reference to tab control on Employees form.
   Set tabCtl = Forms!Employees!TabCtl0

   ' List all controls on the tab control in the Debug window.
   For Each ctlCurrent In tabCtl
      Debug.Print ctlCurrent.Name
   Next ctlCurrent

   Set tabCtl = Nothing
   Set ctlCurrent = Nothing

   Exit Sub

ErrorHandler:
   MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Sub

Além disso, cada página do controle guia tem sua própria coleção Controls. Usando a coleção Controls da página, você pode fazer referência a controles em cada página. O seguinte código enumera os controles de cada página do controle guia no formulário Funcionários.

Sub ListPageControls()

   Dim tabCtl As TabControl
   Dim pagCurrent As Page
   Dim ctlCurrent As Control
   Dim intPageNum As Integer

On Error GoTo ErrorHandler

   ' Return reference to tab control on Employees form.
   Set tabCtl = Forms!Employees!TabCtl0

   ' List all controls for each page on the tab control in the
   ' Debug window.
   For Each pagCurrent In tabCtl.Pages
      intPageNum = intPageNum + 1
      Debug.Print "Page " & intPageNum & " Controls:"
      For Each ctlCurrent In pagCurrent.Controls
         Debug.Print ctlCurrent.Name
      Next ctlCurrent
      Debug.Print
   Next pagCurrent

   Set tabCtl = Nothing
   Set ctlCurrent = Nothing
   Set pagCurrent = Nothing

   Exit Sub

ErrorHandler:
   MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Sub
© 2018 Microsoft