Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Declara um evento definido pelo usuário.
Sintaxe
[ Público ] Eventprocedurename [ (arglist) ]
A instrução Event tem estas partes:
| Sair | Descrição |
|---|---|
| Public | Opcional. Especifica que o evento seja visível em todo o projeto. Os tipos de eventos são públicos por padrão. Observe que os eventos só podem ser gerados no módulo em que são declarados. |
| Nome do procedimento | Obrigatório. Nome do evento; Segue as convenções de nomenclatura de variáveis padrão. |
O argumento listadeargumentos tem as seguintes sintaxe e partes:
[ ByVal | ByRef ] varname [ ( ) ] [ Astype ]
| Sair | Descrição |
|---|---|
| ByVal | Opcional. Indica que o argumento é passado por valor. |
| ByRef | Opcional. Indica se o argumento será passado por referência. ByRef é o padrão no VBA, ao contrário do Visual Basic .NET. |
| nomedavariável | Obrigatório. Nome da variável que representa o argumento que está sendo passado para o procedimento; Segue as convenções de nomenclatura de variáveis padrão. |
| type | Opcional. Tipo de dados do argumento passado para o procedimento; pode ser Byte, Booliano, Inteiro, Longo, Conversor de Moedas, Simples, Duplo, Decimal (não há suporte no momento), Data, Cadeia de Caracteres (somente comprimento variável), Objeto, Variante, um tipo definido pelo usuário ou um tipo de objeto. |
Comentários
Depois que o evento for declarado, use a instrução RaiseEvent para disparar o evento. Ocorrerá um erro de sintaxe se uma declaração de Evento for exibida em um módulo padrão. Um evento não pode ser declarado para retornar um valor. Um evento típico pode ser declarado e gerado, conforme mostrado nos fragmentos a seguir.
' Declare an event at module level of a class module
Event LogonCompleted (UserName as String)
Sub
RaiseEvent LogonCompleted("AntoineJan")
End Sub
Observação
Você pode declarar argumentos de evento da mesma forma que faz argumentos de procedimentos, com as seguintes exceções: os eventos não podem ter argumentos nomeados, argumentos opcionais ou argumentos ParamArray . Os eventos não têm valores de retorno.
Exemplo
O exemplo a seguir usa eventos para contar segundos durante uma demonstração da corrida de 100 metros mais rápida. O código ilustra todos os métodos, propriedades e instruções relacionados a eventos, incluindo a instrução Event .
A classe que gera um evento é a origem do evento e as classes que implementam o evento são os coletores. Uma origem de evento pode ter vários coletores para os eventos que ela gera. Quando a classe gera o evento, esse evento é acionado em cada classe que optou por afundar eventos para essa instância do objeto.
O exemplo também usa um formulário (Form1) com um botão (Command1), um rótulo (Label1) e duas caixas de texto (Text1 e Text2). Quando você clica no botão, a primeira caixa de texto exibe "A partir de agora" e a segunda começa a contar os segundos. Quando o tempo total (9,84 segundos) tiver decorrido, a primeira caixa de texto exibe "Até agora" e a segunda exibe "9,84".
O código especifica os estados inicial e terminal do formulário. Ele também contém o código executado quando os eventos são gerados.
Option Explicit
Private WithEvents mText As TimerState
Private Sub Command1_Click()
Text1.Text = "From Now"
Text1.Refresh
Text2.Text = "0"
Text2.Refresh
Call mText.TimerTask(9.84)
End Sub
Private Sub Form_Load()
Command1.Caption = "Click to Start Timer"
Text1.Text = ""
Text2.Text = ""
Label1.Caption = "The fastest 100 meter run took this long:"
Set mText = New TimerState
End Sub
Private Sub mText_ChangeText()
Text1.Text = "Until Now"
Text2.Text = "9.84"
End Sub
Private Sub mText_UpdateTime(ByVal dblJump As Double)
Text2.Text = Str(Format(dblJump, "0"))
DoEvents
End Sub
O código restante está em um módulo de classe chamado TimerState. As instruções Event declaram os procedimentos iniciados quando os eventos são gerados.
Option Explicit
Public Event UpdateTime(ByVal dblJump As Double)
Public Event ChangeText()
Public Sub TimerTask(ByVal Duration As Double)
Dim dblStart As Double
Dim dblSecond As Double
Dim dblSoFar As Double
dblStart = Timer
dblSoFar = dblStart
Do While Timer < dblStart + Duration
If Timer - dblSoFar >= 1 Then
dblSoFar = dblSoFar + 1
RaiseEvent UpdateTime(Timer - dblStart)
End If
Loop
RaiseEvent ChangeText
End Sub
Confira também
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.