Sei sulla pagina 1di 7

SubprocedimentosAmbiente Office

1 de 7

http://ambienteoffice.com.br/blog/subprocedimentos/

Ambiente Office
Dicas de Microsoft Office/VBA

Subprocedimentos
Publicado em 22 de setembro de 2015 por Felipe Gualberto

Esta pgina explica o primeiro tipo de procedimento, que so os subprocedimentos.


Introduo
Executar um Subprocedimento
Depurar um Subprocedimento
Atribuir uma Tecla de Atalho a um Subprocedimento
Procedimento Chamando Outro Procedimento
Pilha de Chamadas

Introduo
recomendvel ler a pgina procedimentos antes de continuar.
Subprocedimentos (ou macros, subrotinas, rotinas, sub) so procedimentos que executam alguma ao. Eles
podem ser chamados (isto , executados) explicitamente por uma ao direta do usurio, por um boto do
aplicativo, pela interface da Faixa de Opes do aplicativo, por outro procedimento e vrias outras formas.
O prefixo de declarao que voc deve usar num subprocedimento a palavra-chave Sub.
Suponha que voc queira criar dois procedimentos: um que preencha dados em clulas numa planilha e outro
que formate as clulas. Voc poderia, nesse caso, criar um subprocedimento para fazer cada uma dessas aes.
Um nome adequado ao primeiro seria FillData e ao segundo, FormatData:

Sub FillData()
Range("A1").Value = "Ol"
Range("A2").Value = "Mundo!"
End Sub
Sub FormatData()
Range("A1").Font.Bold = True
Range("A2").Interior.ColorIndex = 27
End Sub

Executar um Subprocedimento
Para executar um subprocedimento, posicione o cursor de insero de texto entre o incio e o fim do
subprocedimento desejado e pressione a tecla F5 (ou clique no cone verde Play, que pode ser visto na Barra de
Ferramentas do VBE). Ento, execute primeiramente o procedimento FillData e depois FormatData e veja o
resultado numa planilha a seguir (saia do VBE):

06/01/2016 12:48

SubprocedimentosAmbiente Office

2 de 7

http://ambienteoffice.com.br/blog/subprocedimentos/

Voc pode executar macros fora do VBE. Para tal, v na tela inicial do seu aplicativo e ento pressione Alt+F8.
Ser mostrada uma janela de todos os subprocedimentos que voc pode executar de todos os projetos abertos
no seu aplicativo. Se na sesso do seu aplicativo tiver muitos documentos abertos e seus projetos apresentarem
grande nmero de subprocedimentos de forma a encher a caixa de listagem, voc pode filtrar quais
subprocedimentos quer listar alterando a caixa de combinao Macros em.
Para executar um subprocedimento, clique sobre ele e, em seguida, Executar:

Volte ao VBE e, na janela de cdigo, clique sobre uma linha que esteja fora de ambos os procedimentos e,
ento, pressione F5. Voc ver novamente a janela mostrada acima. Isso aconteceu porque nesse caso o VBE
no sabe qual subprocedimento voc quer executar e ento ele usa essa janela para voc decidir qual ao
tomar.

O boto Editar bastante til quando voc tem muitos mdulos e muitos subprocedimentos: basta clicar nele
que o VBE abrir a janela de cdigo com o cursor de insero de texto dentro do subprocedimento escolhido.
Se voc tiver subprocedimentos com o mesmo nome, mas em mdulos diferentes no mesmo projeto, essa
mesma janela acrescenta o nome do mdulo antes do nome de cada subprocedimento repetido, na sintaxe
mdulo.subprocedimento. No exemplo abaixo, temos dois subprocedimentos chamados GerarRelatrio: um no
mdulo mdlDespesas e outro no mdulo mdlProventos:

06/01/2016 12:48

SubprocedimentosAmbiente Office

3 de 7

http://ambienteoffice.com.br/blog/subprocedimentos/

Vale lembrar que apenas procedimentos do tipo subprocedimento so mostrados nessa lista. Alm disso, os
subprocedimentos no podem possuir argumentos e devem ser pblicos. Esses conceitos sero discutidos
nas sees posteriores.
O termo tcnico da representao de um item mostrando seus precursores qualificao. No exemplo, podemos
dizer que os procedimentos GerarRelatrio esto qualificados pelos seus respectivos mdulos.
Se voc tiver vrios projetos abertos e o nome de alguns mdulos e/ou subprocedimentos repetir, essa
qualificao poder ser mais especfica, mostrando tambm de qual documento um subprocedimento faz parte:

Observe que o nome do documento (Diretoria.xlsm ou Contabilidade.xlsm), sempre so o nvel mais alto e se
separam do nome de um subprocedimento ou mdulo com um ponto de exclamao. O VBE qualifica os
subprocedimentos na forma arquivo!subprocedimento se o mdulo desses subprocedimentos possurem nomes
diferentes ou arquivo!modulo.subprocedimento, se o nome dos mdulos for igual. A lista classificada pelo
nome dos subprocedimentos, no importando o nome dos mdulos e nem dos documentos.
A forma da janela de macros qualificar os subprocedimentos depende de qual documento est ativo no
aplicativo. Por exemplo, se voc ativar a pasta de trabalho Contabilidade.xlsm e exibir a janela de macros, o
VBE ocultar os qualificadores Contabilidade.xlsm! de seus subprocedimentos pois assume que voc sabe que
esses subprocedimentos so parte do documento ativo:

06/01/2016 12:48

SubprocedimentosAmbiente Office

4 de 7

http://ambienteoffice.com.br/blog/subprocedimentos/

Voltando ao VBE, se nesse ambiente voc exibir a janela de macros, perceber que duas diferenas do
comportamento da janela de macros do aplicativo:
Quando necessrio, o qualificador de documento dos subprocedimentos so substitudos pelo nome do
projeto do documento, assumindo a forma projeto.mdulo.subprocedimento;
No filtro Macros em no possvel listar os subprocedimentos de todos os projetos de uma vez.
A figura abaixo mostra essas diferenas:

Depurar um Subprocedimento
Muitas vezes, enquanto estamos em modo de design, fazemos vrios testes e estudos antes de termos
segurana que a execuo do programa seja satisfatria. A depurao um tipo de execuo parcial ou passo a
passo de um programa com o objetivo de reduzir defeitos e/ou consertar resultados inesperados.
Para depurar um subprocedimento, pressione a tecla F8 dentro dele. Voc tambm pode depurar usando o guia
Depurar >> Depurao total ou clicar em Depurar na Janela de Macros do aplicativo.
Nesse modo, voc visualizar passo a passo a execuo de seu programa, j que o VBE indica a prxima linha
que executar colorindo seu fundo de amarelo:

06/01/2016 12:48

SubprocedimentosAmbiente Office

5 de 7

http://ambienteoffice.com.br/blog/subprocedimentos/

Para executar a prxima linha de sua rotina, basta pressionar F8 novamente. Faa isso at alcanar a ltima
linha do procedimento, at no haver mais nenhuma linha amarela, caracterizando o trmino do programa e
voltando o VBE ao modo de design.

Atribuir uma Tecla de Atalho a um Subprocedimento


Uma forma prtica de executar um subprocedimento atribuir uma tecla de atalho a ele. Para exemplificar essa
funcionalidade, crie o subprocedimento a seguir para Excel:

Sub pFormataoLegal()
Selection.Interior.ColorIndex = 24
Selection.Font.Italic = True
Selection.BorderAround LineStyle:=xlContinuous
End Sub

Na Janela de Macros clique no boto Opes:

Voc ver a janela abaixo:

Nesse exemplo, atribu Ctrl+q para um subprocedimento chamado Main. A caixa de texto Descrio opcional,

06/01/2016 12:48

SubprocedimentosAmbiente Office

6 de 7

http://ambienteoffice.com.br/blog/subprocedimentos/

mas voc pode preench-la se quiser criar um breve descritivo de suas macros. Isso pode ser til se outras
pessoas utilizam suas macros e seu projeto est protegido.

Procedimento Chamando Outro Procedimento


Um procedimento pode chamar outro procedimento. Veja o cdigo abaixo:

Sub Main()
Introduo
Formatar
Despedir
End Sub
Sub Introduo()
MsgBox "Programa de teste de chamada de subprocedimentos."
MsgBox "Pressione OK para iniciar a formatao."
End Sub
Sub Formatar()
PovoaDados
FormataDados
End Sub
Sub Despedir()
MsgBox "Tchau!"
End Sub
Sub PovoaDados()
Range("A1").Value = "Ol"
Range("A2").Value = "Mundo!"
End Sub
Sub FormataDados()
Range("A1").Font.Bold = True
Range("A2").Interior.ColorIndex = 27
End Sub

Veja que fcil de deduzir que Main um programa piloto que chama outros procedimentos. A sequncia de
chamadas dos subprocedimentos Main >> Introduo >> Formatar >> PovoaDados >> FormataDados >> Despedir.
Para testar esse exemplo, execute Main. Sugiro que depure (F8) Main, dessa forma, voc poder ver os saltos de
procedimentos na execuo do cdigo.
Note os saltos que o cursor de depurao sofre. A execuo do programa s termina quando se alcana a ltima
linha do procedimento chamado no primeiro nvel. Perceba que quando as instrues de End

Sub

dos

subprocedimentos filhos so alcanadas, a instruo seguinte a ser executada a prxima linha do


procedimento que o chamou.
Voc pode usar tambm a palavra-chave opcional Call antes do nome de um procedimento para cham-lo. O
subprocedimento abaixo equivalente ao exemplo anterior:

Sub Main()
Call Introduo
Call Formatar
Call Despedir
End Sub

06/01/2016 12:48

SubprocedimentosAmbiente Office

7 de 7

Call

http://ambienteoffice.com.br/blog/subprocedimentos/

pode ser usado para lembrar o programador que o procedimento a ser chamado de VBA, e no um

comando interno do VBA. No use Call. uma palavra chave obsoleta que dificulta a leitura do cdigo.

Um procedimento pode chamar a si mesmo numa tcnica chamada Recurso. Se quiser saber mais sobre
recurso, veja recursao (em breve).

Pilha de Chamadas
Uma forma interessante de visualizar a sequncia de chamadas de procedimentos atravs da Pilha de
Chamadas. Clique aqui para saber mais sobre pilha de chamadas.

Sobre Felipe Gualberto


Microsoft Most Valuable Professional (MVP) de Excel.
Ver todos posts de Felipe Gualberto

Esta entrada foi publicada em Tutoriais e marcada com a tag vba, excel, vbe, mdulos, projeto, procedimentos, subprocedimentos, depurao. Adicione o link permanente aos
seus favoritos.

0 Comments

HTTP://AMBIENTEOFFICE.COM.BR/

Introduo a Mdulos de Classe no VBA

Jogo da Serpente em Excel

Estava vendo o forum que vc indicou e realmente tem


uma serie de vantagens. teria sido perfeito para

VBA

Parabns mais uma vez Felipe! Voc sempre


surpreende! Em geral seus tpicos ajudam na

AmbienteXL

Obrigado, Felipe.

Ol, obrigado. Poderia dar mais


detalhes de como seria essa comparao? No entendi.

Ambiente Office
Orgulhosamente criado com WordPress.

06/01/2016 12:48

Potrebbero piacerti anche