Sub-rotina Excel VBA: como chamar Sub em VBA com exemplo
⚡ Resumo Inteligente
Em VBA, uma sub-rotina agrupa um bloco de código que executa uma tarefa sem retornar um valor. Esta página aborda regras de nomenclatura, sintaxe de sub-rotinas, como chamar uma sub-rotina a partir de um botão de comando e como uma sub-rotina difere de uma função.

O que é uma sub-rotina no VBA?
A Sub-rotina em VBA é um trecho de código que executa uma tarefa específica descrita no código, mas não retorna um resultado ou valor. As sub-rotinas são usadas para dividir grandes pedaços de código em pequenas partes gerenciáveis. As sub-rotinas podem ser recuperadas várias vezes em qualquer lugar do programa.
Digamos que você criou uma interface de usuário com caixas de texto para aceitar dados de entrada do usuário. Você pode criar uma sub-rotina que limpe o conteúdo das caixas de texto. Uma sub-rotina de chamada VBA é apropriada nesse cenário porque você não deseja retornar nenhum resultado.
Por que usar sub-rotinas
- Divida o código em um pequeno código gerenciável: Um programa de computador médio possui milhares e milhares de linhas de código-fonte. Isso introduz complexidade. As sub-rotinas ajudam a resolver esse problema, dividindo o programa em pequenos pedaços de código gerenciáveis.
- Code capacidade de reutilização. Digamos que você tenha um programa que precisa acessar o banco de dados, quase todas as janelas do programa precisarão interagir com o banco de dados. Em vez de escrever código separado para essas janelas, você pode criar uma função que lide com todas as interações do banco de dados. Você pode então chamá-lo de qualquer janela que desejar.
- Sub-rotinas e funções são autodocumentadas. Digamos que você tenha uma função calculaLoanInterest e outra que diz connectToDatabase. Apenas olhando o nome da sub-rotina/função, o programador será capaz de dizer o que o programa faz.
Antes de escrever um nome, o compilador espera que ele siga um pequeno conjunto de regras.
Regras de nomenclatura de sub-rotinas e funções
Para usar sub-rotinas e funções, existem um conjunto de regras que devem ser seguidas.
- Uma sub-rotina ou nome de função de chamada VBA não pode conter espaço
- Uma subchamada VBA do Excel ou nome de função deve começar com uma letra ou sublinhado. Não pode começar com um número ou caractere especial
- Uma sub-rotina ou nome de função não pode ser uma palavra-chave. Uma palavra-chave é uma palavra que tem um significado especial em VBA. Palavras como Private, Sub, Function e End, etc. são exemplos de palavras-chave. O compilador os utiliza para tarefas específicas.
Com um nome válido escolhido, a própria declaração segue um padrão fixo.
Sintaxe de sub-rotina VBA
Você precisará habilitar a guia Desenvolvedor no Excel para acompanhar este exemplo. Se você não sabe como ativar a guia Desenvolvedor, leia o tutorial em Controles VBA no Excel
AQUI na sintaxe,
Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String) 'do something End Sub
Explicação da sintaxe
| Code | Ação |
|---|---|
|
|
|
|
|
|
A sub-rotina a seguir aceita o nome e o sobrenome e os exibe em uma caixa de mensagem.
Agora vamos programar e executar este Subprocedimento. Vamos ver isso.
Como chamar Sub em VBA
Abaixo está um processo passo a passo sobre como chamar Sub em VBA:
- Projete a interface do usuário e defina as propriedades dos controles do usuário.
- Adicione a sub-rotina
- Escreva o código do evento de clique para o botão de comando que chama a sub-rotina
- Teste o aplicativo
Passo 1) Interface de Usuário
Projete a interface do usuário conforme mostrado na imagem abaixo.
Defina as seguintes propriedades. As propriedades que estamos definindo:
| S / N | Controlar | Propriedade | Valor |
|---|---|---|---|
| 1 | BotãoComando1 | Nome | btnDisplayFullName |
| 2 | Subtítulo | Sub-rotina de nome completo |
Sua interface agora deve ter a seguinte aparência.
Passo 2) Adicionar sub-rotina
- Pressione Alt + F11 para abrir a janela de código
- Adicione a seguinte sub-rotina
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String) MsgBox firstName & " " & lastName End Sub
AQUI no código,
| Code | Ação |
|---|---|
|
|
|
|
|
|
Passo 3) Chamando a sub-rotina
Chamar a sub-rotina a partir do evento de clique do botão de comando.
- Clique com o botão direito do mouse no botão de comando, conforme mostrado na imagem abaixo. Selecione Exibir. Code.
- O editor de código será aberto
Adicione o seguinte código no editor de código para o evento click do botão de comando btnDisplayFullName.
Private Sub btnDisplayFullName_Click() displayFullName "John", "Doe" End Sub
Sua janela de código agora deve ter a seguinte aparência
Salve as alterações e feche a janela de código.
Passo 4) Testando o código
Na barra de ferramentas do desenvolvedor, desative o modo de design. Como mostrado abaixo.
Passo 5) Clique no botão de comando 'Sub-rotina FullName'.
Você obterá os seguintes resultados
Um botão é conveniente, mas não é a única maneira de iniciar uma sub-rotina e, durante o desenvolvimento, raramente é a mais rápida.
Como executar uma sub-rotina sem um botão
Enquanto você ainda está escrevendo o código, adicionar um controle à planilha apenas para testar uma sub-rotina é uma perda de tempo. O VBA oferece quatro outras maneiras de executar uma sub-rotina, e cada uma delas se adequa a um momento diferente do ciclo de desenvolvimento.
- Pressione F5 no editor: Posicione o cursor em qualquer lugar dentro da Sub e pressione F5. Ela será executada imediatamente. Isso só funciona quando a Sub não recebe argumentos, pois o VBA não possui valores para serem fornecidos.
- Avance com F8: A mesma execução, linha por linha, para que você possa observar a alteração de cada variável na janela "Locais". Use este recurso quando um resultado estiver incorreto e você precisar identificar a causa.
- Utilize a caixa de diálogo Macros: Na guia Desenvolvedor, clique em Macros, selecione o nome e clique em Executar. Somente Subs públicas sem argumentos aparecem nesta lista, razão pela qual uma Sub auxiliar geralmente é declarada como Privada.
- Chame isso de outro Sub: Este é o método usado para qualquer Sub que receba argumentos, e é aquele em que o botão de comando acima se baseia.
A última opção possui duas formas aceitas. Escrever o nome seguido dos argumentos básicos funciona, assim como usar a palavra-chave `Call` explicitamente, mas a regra dos colchetes difere entre elas.
Sub RunTheGreeting() ' Form 1: no Call keyword, no brackets displayFullName "John", "Doe" ' Form 2: Call keyword, brackets required Call displayFullName("Jane", "Roe") End Sub
Ambas as linhas fazem exatamente a mesma coisa. Misturar as duas formas, escrevendo colchetes sem a palavra-chave `Call`, é a causa mais comum do erro de compilação "Expected: =" quando uma `Sub` recebe mais de um argumento.
Diferença entre uma Sub e uma Função em VBA
Sub e Function são os dois tipos de procedimento em VBA, e iniciantes frequentemente escolhem o errado. A questão decisiva é simples: o código que chama o procedimento precisa de um valor de retorno?
| Característica | Sub | função |
|---|---|---|
| Retorna um valor | Não | Sim, atribuído ao nome da função |
| Declarado com | Sub… Fim Sub | Função … Função final |
| Chamado como | Uma declaração em sua própria linha | Parte de uma expressão, por exemplo x = myFunc(2) |
| Pode ser usado em uma célula da planilha. | Não | Sim, como uma função definida pelo usuário. |
| Uso típico | Formatar uma planilha, limpar entradas, exibir uma mensagem | Calcular um total, converter um valor, pesquisar dados |
Use uma Sub quando o código atuar na planilha e uma Função VBA Quando o código produz uma resposta que outra coisa consome.






