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.

  • 📦 Definição: Uma sub-rotina executa uma tarefa específica e não retorna nenhum valor para o código que a chamou.
  • ♻️ Reutilização: Uma sub-rotina pode ser chamada várias vezes de qualquer lugar do projeto.
  • 🔤 Regras de nomenclatura: Um nome não contém espaços, começa com uma letra ou sublinhado e nunca é uma palavra-chave VBA.
  • 🧾 Sintaxe: Private Sub name(ByVal arg As String) abre o bloco e End Sub o fecha.
  • 🖱️ Ligando: O evento Click de um botão de comando chama a sub-rotina e passa seus argumentos.
  • ▶ ️ Executando diretamente: A tecla F5, a caixa de diálogo Macros ou a palavra-chave Call executam uma sub-rotina sem a necessidade de um botão.
  • 🔁 Subordinação ou função: Escolha uma função quando um valor precisar ser retornado; caso contrário, escolha uma sub-rotina.

Sub-rotina Excel VBA

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
  • “Sub privada minhaSubRoutine(…)”
  • Aqui a palavra-chave “Sub” é usada para declarar uma sub-rotina chamada “mySubRoutine” e iniciar o corpo da sub-rotina.
  • A palavra-chave Private é usada para especificar o escopo da sub-rotina
  • “ByVal arg1 como string, ByVal arg2 como string”:
  • Ele declara dois parâmetros de tipo de dados string nome arg1 e arg2
  • “Fim Sub”
  • “End Sub” é usado para finalizar o corpo da sub-rotina

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:

  1. Projete a interface do usuário e defina as propriedades dos controles do usuário.
  2. Adicione a sub-rotina
  3. Escreva o código do evento de clique para o botão de comando que chama a sub-rotina
  4. Teste o aplicativo

Passo 1) Interface de Usuário

Projete a interface do usuário conforme mostrado na imagem abaixo.

Como chamar Sub em VBA

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.

Como chamar Sub em VBA

Passo 2) Adicionar sub-rotina

  1. Pressione Alt + F11 para abrir a janela de código
  2. 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
  • “Sub display privadoFullName(…)”
  • Ele declara uma sub-rotina privada displayFullName que aceita dois parâmetros de string.
  • “ByVal primeiro nome como string, ByVal sobrenome como string”
  • Ele declara duas variáveis ​​de parâmetro firstName e lastName
  • MsgBox primeiro nome, ultimo nome"
  • Ele chama a mensagemBox função interna para exibir uma caixa de mensagem. Em seguida, passa as variáveis ​​'firstName' e 'lastName' como parâmetros.
  • O e comercial “&” é usado para concatenar as duas variáveis ​​e adicionar um espaço vazio entre elas.

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

Como chamar Sub em VBA

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

Como chamar Sub em VBA

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.

Como chamar Sub em VBA

Passo 5) Clique no botão de comando 'Sub-rotina FullName'.

Você obterá os seguintes resultados

Como chamar Sub em VBA

Baixe a planilha do Excel acima. Code

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.

Perguntas Frequentes

Uma Subprivada só pode ser chamada de dentro do módulo que a declara. Uma Subpública é visível para todos os módulos do projeto e é o único tipo que aparece na caixa de diálogo Macros.

ByVal passa uma cópia, portanto a sub-rotina não pode alterar a variável do chamador. ByRef passa a própria variável, portanto qualquer alteração é visível para o chamador. ByRef é o padrão quando nenhuma das palavras-chave é usada.

Use a instrução Exit Sub. Ela interrompe o procedimento nesse ponto e retorna o controle para quem o chamou, o que é útil para sair prematuramente quando um teste de validação falha.

Sim. Cole a macro e um assistente de IA agrupará as linhas relacionadas, sugerirá um nome descritivo para cada nova Sub e reescreverá a original como uma pequena sequência de chamadas. Teste o resultado em uma cópia da planilha.

Sim. Forneça o texto do erro e a linha de chamada, e um assistente de IA identificará as causas, como colchetes usados ​​sem a palavra-chave `Call`, uma contagem incorreta de argumentos ou um tipo de dados incompatível, e então fornecerá a linha corrigida.

Resuma esta postagem com: