Segue sugestão.
'------------------------------------------------------------------
' Vincular a macro a algum evento do documento ou planilha
' Aqui está vinculada ao Evento 'Ao salvar documento'
'------------------------------------------------------------------
Sub Temporizador( pEvent )
rem Define constantes
Const ColB = 1
rem Define variáveis
Dim oSheet As Object, oCel As Object
Dim dStartTime As Date, dEndTime As Date
Dim iTime As Integer, ElapsedTime As Integer
Dim lmiliTime As Long, lSpan As Long
On Error GoTo SAIR
rem Obtem a planilha ativa
oSheet = ThisComponent.CurrentController.getActiveSheet()
rem Obtem a célula onde está o tempo em minutos
oCel = oSheet.getCellByPosition(ColB, 0)
rem Formata a célula para retornar números inteiros
oCel.NumberFormat = 1
rem Obtem o valor preenchido na célula
iTime = oCel.Value
rem Permite o usuário escolher quanto tempo
rem iTime = Trim( InputBox("Tempo até fechar em minutos", "Tempo de uso", "3") )
rem Duração deve ser em milisegundos ( 1s = 1000ms / 1min = 60000ms )
lmiliTime = 1000
rem Converte o tempo obtido na célula de minutos para milisegundos
lSpan = iTime * lmiliTime
rem Obtem o tempo inicial e o final usando a Função Timer
dStartTime = Timer
Wait ( lSpan )
dEndTime = Timer
rem Retorna o tempo decorrido
ElapsedTime = dEndTime - dStartTime
rem Se tempo decorrido for igual ao indicado pelo usuário, salvar e fechar
rem Se não, sair
If ElapsedTime = iTime And oCel.String <> "" Then
ThisComponent.store()
ThisComponent.close(true)
Else
Exit Sub
End If
SAIR:
0
End Sub
AskTemporizador.ods (13,7,KB)
Obs.: As variáveis dStartTime
e dEndTime
estão declaradas como do tipo Date
, porém, também podem ser declaradas como outros tipos númericos, como, por exemplo, Single
.