Fonte: link
Nota:
Isso é para um layout de teclado padrão dos EUA. Em outros layouts de teclado, a combinação pode ser diferente; por exemplo, com um layout de teclado alemão padrão, é . em vez de ; .
Por favor, ajude-me a arruinar as férias do meu filho! (Estou fazendo ele estudar matemática).
Ele tem que fazer uma quantidade enorme de exercícios de Geometria, então eu estava pensando em usar o Excel para acompanhar o progresso: Para cada pergunta ele usaria duas células: uma para rastrear o tempo que ele começou a trabalhar na pergunta e o outro para armazenar a duração que levou para trabalhar na questão. Dessa forma, eu seria capaz de rastrear o progresso dele e também seria capaz de fazer um pouco de engenharia social, provando ao professor que ele realmente investiu algum esforço.
Agora, digamos que temos as células A1, B1 e C1 dedicadas à primeira pergunta. Minha ideia é que quando ele começar a trabalhar na questão ele vai entrar no horário atual para a célula A1. Quando ele parar de trabalhar na questão, ele entrará no horário atual para a célula B1. C1 calculará e armazenará a duração subtraindo A1 de B1. (A versão 2 talvez hospedasse um botão na célula para que clicar uma vez preenchesse A1, clicando novamente armazenaria o valor em B1 e calcularia C1:))
No entanto, se eu fizer A1 = NOW (), a hora não é um valor, mas uma fórmula que é "atualizada constantemente". O que eu quero é fazer A1 = o valor retornado de NOW no momento em que meu filho começou a processar a pergunta.
Como faço isso?
Fonte: link
Nota:
Isso é para um layout de teclado padrão dos EUA. Em outros layouts de teclado, a combinação pode ser diferente; por exemplo, com um layout de teclado alemão padrão, é . em vez de ; .
Eu gosto da ideia com um botão melhor, então aqui está um código que você pode usar com isso:
Global i As Integer
Sub Button1_Click()
ActiveSheet.Shapes(1).Select
If Selection.Characters.Text = "Start" Then
i = 1
Do Until IsEmpty(Range("A" & i).Value)
i = i + 1
Loop
Range("A" & i).Value = Now()
ActiveSheet.Shapes(1).Select
Selection.Characters.Text = "Stop"
Range("A" & i).Select
ElseIf Selection.Characters.Text = "Stop" Then
Range("B" & i).Value = Now()
Range("C" & i).Value = DateDiff("s", Range("A" & i).Value, Range("B" & i).Value)
ActiveSheet.Shapes(1).Select
Selection.Characters.Text = "Start"
Range("C" & i).Select
End If
End Sub
Minhas habilidades de programação do excel podem não ser perfeitas ou efetivas, mas para isso devem ser suficientes. Certifique-se de não esquecer a variável global. Isso também pressupõe que o primeiro botão é o que contém esse código (e tem o texto "Iniciar" para começar). Calcula automaticamente o tempo usado em segundos.