AS EMPRESAS ESTÃO "DESESPERADAS" POR ESTE TIPO DE PROFISSIONAL... - VOCÊ É UM DELES?
MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI - O Conhecimento que Vira Dinheiro - CLIQUE AQUI
| « Anterior | Δ Página principal | ¤ Índice | Próxima » |
| Criando menus, barras de comando e botões personalizados no Excel usando VBA Autor: Robert Friedrick Martim |
||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Lição 013 - Criando um Menu Camaleão | ||||||||||||||||||||||||||||||||
Vários clientes que adquiriram a primeira edição deste módulo me escreveram perguntando como fazer para criar um menu “camaleão”, aquele que muda conforme a necessidade. Supondo que você se encontra na planilha clientes, então, um menu fica disponível. Se você se encontra na planilha contas, outro menu aparece e assim sucessivamente. A principio, estava um pouco relutante de escrever esta parte, afinal, o código para fazer isso já havia sido apresentado de forma indireta bastando apenas uma adaptação para o desejado. Contudo, após vez a real dificuldade de visualização da solução do problema, eu acredito que a decisão seja a mais acertada para que o leitor tenha em mãos um curso que seja realmente completo. Primeiramente, precisamos visualizar o problema. O que realmente desejamos fazer? A idéia é ter um menu que seja modificado quando certa planilha é ativada. E o que é isso exatamente? Quando ativamos uma planilha nós disparamos um evento no aplicativo Excel, quando o evento é disparado podemos capturar o evento é utilizá-lo fazer uma outra coisa, como modificar a estrutura do menu ativo. É exatamente esta idéia que precisamos colocar em prática. Uma forma simples de fazer isso é utilizar os eventos da própria planilha, por exemplo:
Quando a planilha que contém o código acima é ativada, a sub-rotina criarMenu é chamada e o menu construído. Podemos fazer a mesma coisa na planilha seguinte, e na seguinte, e na seguinte, etc. Porém, teríamos que fazer isso para cada planilha o que pode se tornar uma bola de neve. Além do que ela não resolve o problema da seleção de uma planilha em uma outra pasta ativa. Vamos supor que o código acima se encontra na Plan1 da Pasta1. O que ocorre se você seleciona a Plan1 da Pasta2? Sem dúvida que não acontecerá o que você espera, ou melhor, não acontecerá nada. O formato do menu será o seguinte:
Figura 0‑27 Neste caso, temos um combobox que lista as planilhas disponíveis. O popup que irá mudar é o popup contas. Quando a planilha de fornecedores for ativada, o menu será modificado para o menu fornecedores e assim por diante:
Figura 0‑28 A complexidade de seu menu deve ser ditada pela sua real necessidade. Algumas considerações antes de continuarmos:
Para o momento, estes são os três pontos que precisamos ter em mente. O primeiro, já havia discutido, o segundo é um extra e o terceiro é apenas para lembrá-lo que o código pode se tornar muito mais complexo do que o atual. Então, vamos iniciar pela parte mais simples. Abra a janela de código da pasta de trabalho. Nela você deverá inserir as seguintes linhas:
As rotinas funcionam nos eventos Open e BeforeClose da pasta de trabalho. Iniciaremos pela declaração de algumas variáveis comuns a todas as sub-rotinas. Adicione um módulo e no topo do módulo adicione as seguintes variáveis e constantes: 'Constante públicas utilizadas no código Public Const CMDBARNOME As String = "MENU CAMALEAO" Public Const MENUFORNECEDORES As String = "Fornecedores" Public Const MENUCLIENTES As String = "Clientes" Public Const MENUCONTA As String = "Contas"
'Dimensiona os objetos contendo os eventos como sendo a classe onde 'onde eventos foram definidos 'appExcel refere-se aos eventos do aplicativo (Excel) Dim appExcel As New Classe1 ' cboBox refere-se aos eventos da combobox Dim cboBox As New Classe1 Os objetos referentes à Classe1 serão discutidos nos comentários da classe. O próximo passo é escrever todas as sub-rotinas para criação, remoção e reconstrução do menu. No mesmo módulo, você deverá adicionar as seguintes sub-rotinas:
As três sub-rotinas para reestruturação do menu podem ser colocadas em uma única rotina, porém, deixarei esta parte como exercício para o leitor. Tudo que o leitor precisa fazer é observar os pontos em comuns nas sub-rotinas e utilizá-los na construção de uma única sub. Com as sub-rotinas resolvidas, adicione uma classe ao seu projeto. Lembre-se que nos referimos à classe como Classe1 quando declaramos os objetos Application e Combobox. Portanto, este deve ser o nome da classe. Caso queira, utilize outro nome qualquer, mas não esqueça de modificar no módulo. Abaixo se encontra a seqüência na classe com os comentários para melhor compreensão do desenvolvimento do código:
Montado o nosso menu, ao rodá-lo dentro da planilha de criação o menu será reajustado de acordo com a planilha selecionada:
Figure 0‑11 Caso você ative (ou crie) uma nova pasta de trabalho, novamente o menu é reajustado e a combobox travada:
Figure 0‑12 |
||||||||||||||||||||||||||||||||
| « Anterior | Δ Página principal | ¤ Índice | Próxima » |
|
MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI (Online, Vitalício, Prático e Atualizado)! |
|
|
NÃO PROCURE VAGAS, SEJA PROCURADO! |
|
Para Todos os Detalhes, Acesse:
https://juliobattisti.com.br/curso-infra-ti.asp
|
Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434
Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208
Todos os direitos reservados, Júlio Battisti 2001-2026 ®
LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO
DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI