Menus em Userforms sem o uso de API’s
Parte 2
Agora chegou a hora de definirmos os itens de cada Menu,
definindo qual a ação de cada um, se ele
terá ou não Sub-Menu, definindo também a região do Sub-Menu, e outras
configurações:
Alterne para a Planilha “Plan1”.
Desenvolva a seguinte estrutura. Não é necessário fazer
nenhuma formatação.
Na Coluna A, temos os
itens dos nossos 2 menus(Arquivo e Diversos), adicionado no UserForm.
Na Coluna B(Ação), definimos um número exclusivo para cada
item de menu, que indicará sua ação.
Na Coluna C(Seta), Informamos que, apenas para as Ações 6 e
7 acionaremos um sub-menu. Se quiséssemos, todos poderiam ter sub-menus. Este símbolo
corresponde à combinação da tecla Alt pressionada + 272.
Na Coluna D(SubMenu), Informamos em qual região da planilha
está os itens do SubMenu(Colocar a seta na coluna C).
A Coluna E(Height), serve para definir qual será a
altura(Height) do controle Listbox(Menu), cujo valor não se consegue definir
precisamente através de cálculos.
Agora, sem muitas explicações, vamos definir a região dos 2
sub-menus indicados nas Ações 6 e 7:
A Coluna H(Ação), é formada aqui pelo número da Ação que a
chama [6], concatenada com um indicador exclusivo que será a ação à disparar
quando acionado.
Salve novamente seu projeto.
Volte para o ambiente de programação do Visual Basic.
Quando passamos o mouse sobre um menu, ele realça. O Subprocedimento
abaixo recebe um parâmetro que será a Tag do menu no qual o mouse está
atualmente posicionado e empregará o efeito ao mesmo.
Este bloco de código será chamado de dentro do procedimento
MouseMove dos objetos menuArquivo e menuDiversos:
Se você pressionar F5 neste instante, já poderá ver o efeito
ao mover o mouse sobre os menus.
Porém, quando clicamos sobre um menu, é então exibido os
itens daquele menu, e se movermos o mouse sobre outro menu, os itens deste
deverá também ser exibidos sem necessidade de clicarmos novamente. Certo?
É o que faremos agora. Crie então um Subprocedimento com o
nome PosicaoMenu que receberá 2 parâmetros: Posição(integer) e
Intervalo(string), com as instruções conforme abaixo:
A rotina acima será chamada de dentro do SubProcedimento
moveMouse (2ª linha) dos objetos
menuArquivo e menuDiversos. Logo, a Sub ficará desta forma:
Como temos no Menu “Diversos” 2 itens que possuem também
sub-menus, vamos então criar outra rotina para controlar este sub-menu. O
código desta rotina é quase igual à da rotina “PosicaoMenu”, o que nos faz a chamarmos
de “PosicaoSubMenu”:
Salve seu projeto.