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.






