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

Criando os códigos para as telas de comando

Cavalcante Consultores > Biblioteca de Excel > Criando os códigos para as telas de comando

(Este conteúdo é uma continuação de criando o leiaute da tela de comando.)

Introdução

No texto anterior, você aprendeu a criar um formulário, adicionar componentes a ele e nomeá-los adequadamente. Neste conteúdo, você vai adicionar funcionalidade ao formulário utilizando VBA.

Ao trabalhar com formulários, você precisará definir o comportamento de cada componente conforme a interação do usuário. Isto é feito através de eventos associados a cada um destes objetos, de forma análoga aos eventos de planilha utilizados na criação de macros autoexecutáveis: por exemplo, você pode criar códigos distintos que serão executados quando um botão for pressionado, a janela fechada, ou o valor de uma caixa de texto alterado. Os eventos disponíveis dependem do componente em questão: consulte uma lista dos principais mais abaixo.

Exemplo

Este exemplo é uma continuação do conteúdo criando o leiaute da tela de comando, onde um formulário faz a interface entre o usuário e uma tabela de nomes e emails. O formulário é utilizado para adicionar estas informações a uma tabela, até que ela esteja cheia. Por exemplo:

Ao clicar no botão "Adicionar", os campos "Nome" e "Email" (nomeados inputNome e inputEmail) são enviados para a planilha:

Desejamos que isto não ocorra em duas circunstâncias:

Abra o editor do Visual Basic, localize o formulário formEntrada e dê um clique duplo em um dos seus componentes para abrir o modo de edição. Observe o código da macro:

Private Sub buttonAdd_Click()
    
    ' Exibe uma mensagem de erro se o usuário
    ' não tiver preenchido os campos inputNome
    ' e inputEmail. Em seguida, encerra a
    ' execução da rotina.
    
    If inputNome.Value = Empty Or inputEmail = Empty Then
        MsgBox "Você deve fornecer um nome e um email."
        Exit Sub
    End If
    
    Dim i As Integer
    
    ' Percorre a região definida como tabela
    ' de registros (C12:D20) e adiciona os
    ' valores de inputNome e inputEmail à
    ' primeira linha vazia. Se isto for feito,
    ' encerra a execução do formulário (com a
    ' instrução Unload Me.
    
    For i = 12 To 20
        If Cells(i, 3).Value = Empty And Cells(i, 4).Value = Empty Then
            Cells(i, 3).Value = inputNome.Value
            Cells(i, 4).Value = inputEmail.Value
            Unload Me
            Exit Sub
        End If
    Next
    
    ' Na hipótese da região acima estar cheia,
    ' exibe uma mensagem de erro e encerra a
    ' execução do formulário.
    
    MsgBox "A listagem já está cheia. Não é possível inserir novos registros."
    Unload Me
    
End Sub

Observe o nome da rotina: buttonAdd_Click. Ele segue o esquema de disparo de eventos no VBA: buttonAdd é o nome do componente, e Click é o evento que dispara a macro. Veja alguns exemplos de eventos:

Note agora o uso de inputNome.Value. Os controles adicionados em um formulário possuem métodos e propriedades, como todos os outros objetos no VBA. Além da propriedade Value, você pode fazer referência a qualquer elemento listado na listagem de propriedades, como os seguintes exemplos:

(Prossiga para o conteúdo criando os links entre os objetos e as planilhas.)

Pratique!