VBA - Acrescentar controles dinamicamente em um Userform

Faça uma pergunta

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

Excel - Proteger uma planilha e suas células
VBA: última linha não vazia (todas as versões)