WD2000: Como implementar um atraso no Visual Basic para aplicações

Sumário

O Word não tem um método incorporado para atrasar a execução de uma macro, mas as soluções podem ser utilizadas para conseguir este efeito.

Mais informações

A Microsoft fornece exemplos de programação apenas a título ilustrativo, sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação que está a ser demonstrada e com as ferramentas que são utilizadas para criar e depurar procedimentos. Técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.
Para mais informações sobre como utilizar o código de exemplo neste artigo, clique no número de artigo abaixo para visualizar o artigo na Microsoft Knowledge Base:

212536 OFF2000: como executar o código de exemplo artigos da Knowledge Base
Pode utilizar um dos seguintes métodos para atrasar a execução de uma macro utilizando o Visual Basic for Applications.


Método 1: Utilizar um vazio para... Ciclo seguinte

Uma desvantagem deste método é que não existe nenhuma forma directa para determinar a quantidade de tempo que o programa demora a executar o ciclo exacta. A quantidade de tempo depende da velocidade do computador. O seguinte código executa um loop que não faz nada, mas ocupam algum tempo.

Sub MyDelayMacro

For iCount = 1 to 1000
Next iCount

End Sub

Método 2: Utilizar uma chamada da API para suspender a execução do Word

Utilize uma chamada da API para suspender a execução do Word para um período de tempo fixo.

APIs Kernel32 contém uma função que interrompe a execução de um programa para um determinado período de tempo, especificado em milissegundos. Para poder utilizar a função, deve primeiro ser declarada na secção General Declarations do módulo no qual irá ser utilizado:

   Declare Sub Sleep Lib "kernel32" Alias "Sleep" _
(ByVal dwMilliseconds As Long)

Utilize a seguinte sintaxe para chamar a função de suspensão :

Sub Sleep()
Sleep 1000 'Implements a 1 second delay
End Sub

Método 3: Utilizar o método de OnTime

Utilize o método OnTime para definir uma quantidade de tempo de espera. O método OnTime utiliza a seguinte sintaxe:

expressão. OnTime (quando, nome, tolerância)Uma vez que o argumento nome requer o nome de uma macro para ser executado, tem de criar duas macros: a primeira macro para conter a chamada de método de OnTime e outros comandos relevantes para a macro e a segunda macro seja executada quando o tempo atribuído passou. A segunda macro pode ser uma macro "manequim" que não faz nada.

Este exemplo executa a macro com o nome "MyDelayMacro" 15 segundos desde que o exemplo é executado.

Sub MyMainMacro()

' Pause for 15 seconds.
Application.OnTime When:=Now + TimeValue("00:00:15"), _
Name:="MyDelayMacro"

End Sub

Public Sub MyDelayMacro()

' Place your delayed macro commands here.
MsgBox "This macro runs after 15 seconds."

End Sub

Para mais informações sobre como utilizar o método de OnTime, no Editor do Visual Basic, clique em Ajuda do Microsoft Visual Basic , no menu Ajuda , escreva o método OnTime no Assistente do Office ou o Assistente de respostas e, em seguida, clique em Procurar para visualizar o tópico.

Referências

Para obter informações adicionais sobre como obter ajuda com o Visual Basic for Applications, clique no número de artigo abaixo para visualizar o artigo na Microsoft Knowledge Base:

212623 WD2000: recursos de programação de Macro

226118 OFF2000: recursos de programação para Visual Basic for Applications

Precisa de mais ajuda?

Aumente os seus conhecimentos
Explore as formações
Seja o primeiro a obter novas funcionalidades
Aderir ao Microsoft insiders

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×