Aprenda 6 Formas de Percorrer Controles em um Forms no Access

Reading time: 6 minutes

accessfacil.com

6 Formas de Percorrer Controles em um Forms: Entenda as razões para usar esta funcionalidade

Neste tutorial você vai aprender 6 Formas de Percorrer Controles em um Forms. 😲

Podemos dizer que você queira mostrar ou ocultar um grupo de controles de formulário com base em alguns critérios. Desta forma, há várias razões pelas quais você pode querer fazer isso, tais como:

  • Proteja os dados da edição acidental;
  • Usar a “segurança” no nível de aplicação para ajustar a interface do usuário com base na função do usuário;
  • Mostrar ou ocultar campos com base no tipo de dados (por exemplo, cliente x fornecedor);
  • Ocultar informações confidenciais de possíveis ataques.

Seja qual for o motivo, inevitavelmente haverá momentos em que você desejará fornecer algum tipo de tratamento especial para um grupo de controles de formulário. 

Dependendo do que esses controles têm em comum, existem várias abordagens diferentes que você pode usar para percorrê-los no VBA.

Vamos conhecê-los agora!💪

(Primeira) 6 Formas de Percorrer Controles em um Forms: Percorrendo cada controle

O 1º exemplo simplesmente percorre a coleção CONTROLS de um forms, ou seja, é uma coleção de todos os controles do formulário. Neste exemplo estou apenas imprimindo o nome do controle na janela imediata para fins de demonstração.

 Em um aplicativo real, você substituiria a Debug.Print Ctl.Namelinha por uma ou mais linhas de código que fizessem algo interessante com o objeto de controle, como mostrar/ocultar ou habilitar/desabilitar.

Dim myControls  As Control
For Each myControls In Me.Controls
    Debug.Print myControls.Name
Next myControls

(Segunda) 6 Formas de Percorrer Controles em um Forms: Por Seção do Formulário

Os formulários do Access possuem 3 seções com as quais você precisa se preocupar*:

  • Cabeçalho do formulário:Me.Section(acHeader)
  • Detalhe do formulário:Me.Section(acDetail)
  • Rodapé do formulário:Me.Section(acFooter)

Cada uma dessas seções tem sua própria Controlscoleção que inclui apenas os controles que foram colocados nessa seção.

Dim myControls  As Control
For Each myControls In Me.Section(acDetail).Controls
    Debug.Print myControls.Name
Next myControls

Obs: Os formulários também possuem cabeçalho e rodapé de página, mas você não deve usá-los. Eles só aparecem quando o formulário é impresso ou na visualização de visualização de impressão, mas seus usuários não devem imprimir seus formulários. É para isso que servem os relatórios.

(Terceira) 6 Formas de Percorrer Controles em um Forms: Por Tipo de Controle

Você pode usar a propriedade Control Type para tratar todas as suas caixas de texto ou textBox ou todas as suas caixas de combinação ou comboBox, da mesma maneira:

Dim myControls As Control
For Each myConstrols In Me.Controls
    Select Case myConstrols.ControlType
    Case acLabel:    Debug.Print "Label  : "; myControls.Name
    Case acTextBox:  Debug.Print "Textbox: "; myControls.Name
    Case acComboBox: Debug.Print "Combo  : "; myControls.Name
    Case acListBox:  Debug.Print "Listbox: "; myControls.Name
    End Select
Next myControls

Para obter uma lista completa de enumerações de ControlType, consulte aqui: AcControlType enumeration (Access) .

(Quarta) 6 Formas de Percorrer Controles em um Forms: Pela propriedade da TAG (Marca) de controle

A propriedade Tag (Marca) é uma pequena propriedade de controle útil que aceita qualquer caracter de até 2.048 caracteres. Você pode usar essa propriedade para identificar grupos de controles que deseja tratar da mesma maneira.

Por exemplo, o código abaixo produzirá o nome de cada controle em nosso formulário que possui um valor de Tag de “MeuGrupo”  

Dim myControls As Control
For Each myControls In Me.Controls
    If myControls.Tag = "MeuGrupo" Then Debug.Print myControls.Name
Next myControls

A propriedade Tag (Marca) pode ser definida na guia “Outro” da Folha de Propriedades do controle no modo de design do formulário:

accessfacil.com

Uma das maiores vantagens dessa abordagem é que você pode selecionar [Ctrl] ou clicar-arrastar-selecionar vários controles no Form Design View e definir todos os valores de Tag de uma só vez.  

Infelizmente, o contrário não é possível. Não existe uma maneira fácil de selecionar todos os controles que possuem uma determinada propriedade Tag. Se você quiser ver facilmente quais controles receberam algum tratamento especial, considere selecionar controles por nome, conforme mostrado nas duas abordagens finais.

Baixe o arquivo para Praticar!!👇👇👇

Faça download do Template deste Tutorial

Insira o seu endereço de e-mail abaixo para receber grátis o link para fazer download do arquivo.>

Fique tranquilo, seu e-mail está completamente SEGUROconosco!

(Quinta) 6 Formas de Percorrer Controles em um Forms: Por nome de controle

Uma desvantagem de usar a propriedade Tag (Marca) para identificar quais controles mostrar ou ocultar é que não há como ver quais controles têm essa propriedade Tag (Marca) e quais não têm. Usando uma instrução Select Case, podemos ver visualmente o nome de cada controle que está recebendo tratamento especial em um local dentro do código.

Dim myControls As Control
For Each myControls In Me.Controls
    Select Case myConstrols.Name
    Case "TextBox1", "TextBox2"
        Debug.Print myControls.Name
    End Select
Next myControls

(Sexta) 6 Formas de Percorrer Controles em um Forms: Por propriedade do nome de controle

Existem alguns problemas com a abordagem anterior, no entanto:

  • Você pode ter um erro de digitação ao digitar o nome do controle no VBA;
  • O nome do controle pode ser alterado

A vantagem de usar a Namepropriedade de um controle – em vez de usar uma string literal – é que você pode verificar em tempo de compilação se cada um dos controles para os quais você tem tratamento especial realmente existe.

 Ao usar o nome do controle como uma string, você perde o benefício da verificação em tempo de compilação. Com nomes de string, erros de digitação e controles renomeados tornam -se erros de lógica . Ao usar a propriedade Name do controle, erros de digitação e controles renomeados são erros de compilação .

Dim myControls As Control
For Each myConstrols In Me.Controls
    Select Case myConstrols.Name
    Case Me.TextBox1.Name, Me.TextBox2.Name
        Debug.Print myControls.Name
    End Select
Next myControls

Curso de Access VBA Completo: Do Básico ao Avançado.

Quer aprender a programar no Access? Clique na imagem abaixo:

Por fim, deixe seu comentário sobre o que achou, se usar este recurso e você também pode enviar a sua sugestão para os próximos posts.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *