VBA - Acrescentar controles dinamicamente em um Userform

Fevereiro 2017


Para criar o suporte desta demonstração eu empreguei meu exemplo da calculadora mas criei todos os controles de maneira dinâmica

Quando você cria controles de maneira dinâmica em um UF, Ecel não reconhece os nomes dos controles. O que quer dizer que os acontecimentos gerados pelos seus controles trazem também suas propriedades e que não serão acessíveis com os nomes que você lhes atribui. Por exemplo, lhe criar um botão com o seguinte código:

Set Bouton = Me.Controls.Add("Forms.CommandButton.1", "Bt" & i, True)
O nome do botão será (supondo que i = 1 ) BT1
Mas o acontecimento Private Sub BT1_Click() não será jamais gerado. Excel conhecerá somente Botão. Para remediar isto é preciso empregar as coleções de objetos , suas propriedades e coleções de classe para os acontecimentos. As coleções de objetos contém não somente o controle, mas também uma chave de objetos que permite de referenciar. Iniciando a propriedade Tag dos controles com o index desejar a coleção de classe poderá enviar um index o que permitirá também saber qual controle foi o sujeito deste acontecimento.

Não existe nenhum controle no desing de UserForm. Todos os controles da calculadora são criados dinamicamente, bem como os Frames container. A demonstração dá também o meio de incorporar os botões nos frames.



Download:
Servidor 1 : Ajouter Control UserForm.xls

Tradução feita por Ana Spadari

Veja também

Artigo original publicado por . Tradução feita por ninha25. Última modificação: 21 de março de 2011 às 06:39 por ninha25.
Este documento, intitulado 'VBA - Acrescentar controles dinamicamente em um Userform', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.