Cavalcante Consultores – treinamento e consultoria em finanças e Excel

Rotinas públicas e privadas

Cavalcante Consultores > Biblioteca de Excel > Rotinas públicas e privadas

O que é?

Uma rotina é um conjunto de códigos que executa uma determinada tarefa. Qualquer código do Visual Basic para ser executado deve ser escrito dentro de uma rotina que pode ser classificada como: Sub-rotina, função ou procedimento de evento.

Uma sub-rotina é identificada pelo nome que lhe atribuímos, executa uma série de comandos, sem retornar valores. A função tem como objetivo executar uma série de comandos e retorna um ou mais valores. Um procedimento de evento executa comandos quando um objeto é acionado, seja pela ação do usuário (como clicar com o mouse) ou por meio de um código do próprio programa.

Rotinas públicas e privadas

As rotinas públicas (Public) podem ser chamadas dentro de qualquer outra rotina e de qualquer parte do projeto (outros módulos, formulários, objetos). Este tipo de rotina ficam disponíveis também em outro projeto aberto, desde que você adicione a referência a esse projeto no menu FerramentasReferências.

Já no caso das rotinas privadas (Private), estas só podem ser executadas no módulo onde foram escritas. Elas só podem ser chamadas dentro das rotinas que pertençam ao mesmo módulo ou objeto. Se forem chamadas a partir de outro módulo, ocorrerá o erro: “Sub ou Function não definida”.

As ub-rotinas e funções são públicas por padrão. Caso não queira que sejam públicas, é necessário que declare usando a palavra-chave Private (Private Sub ou Private Function).

Os procedimentos de evento são privados por padrão, a palavra-chave Private é automaticamente inserida antes da declaração do procedimento (Private Sub evento).

Em geral, é aconselhável declarar rotinas privadas somente dentro de módulos de classe e de objetos (formulários, planilhas, etc.), porque se referem a um evento específico, e rotinas públicas dentro de módulos padrão.

Sintaxe

[Public ou Private]  Sub [nome_da_sub-rotina]()
    .....códigos
End Sub
[Public ou Private]  Function [nome_da_função](argumentos)
      .....códigos
End Function
Private  Sub [evento]()
      .....códigos
End Sub

Exemplo

Neste exemplo, vamos criar um procedimento de evento dentro do objeto Planilha2: “Private Sub Worksheet_Activate”. Esse procedimento executa uma sub-rotina quando a planilha2 é selecionada (quando se clica nela, por exemplo).

A sub-rotina pública mensagem (Public Sub mensagem) será escrita dentro do Módulo1 e, por ser pública, poderá ser executada a partir da rotina da Planilha2 e de qualquer módulo do arquivo. A sub-rotina mensagem exibe uma caixa de mensagem na tela.

Observação1: Sub-rotinas são públicas por padrão, portanto não é obrigatório escrever a palavra-chave Public, poderíamos apenas escrever Sub mensagem.

Observação2: Caso você altere a sub-rotina mensagem de pública para privada, escrevendo Private Sub mensagem, ao tentar executar o procedimento Worksheet_Activate na Planilha2 ocorrerá um erro, pois rotinas privadas não podem ser acessadas de outros módulos e objetos.

Pratique!