Tentando criar um cronômetro iniciar / parar usando uma macro do Excel

0

Sou novo na criação de Macros no Excel e tenho tentado entender o VBA desmontando Macros que outros criaram.

O que eu estou tentando criar agora é uma temporização de Start / Stop para medir quanto tempo é gasto em projetos diferentes e em diferentes tarefas dentro de projetos.

Eu quero que meu usuário selecione o projeto (de um menu suspenso que criei localizado em A2) e o tipo de tarefa (também em um menu suspenso localizado em B2) e clique em um botão "Iniciar" (todos em Planilha 1). Isso executará uma macro para transferir essas duas entradas para a próxima linha disponível na Folha 2 (colunas A e B) e, em seguida, inserir a data atual (coluna C) e a hora atual (coluna D). Quando terminarem de trabalhar, eles clicam em outro botão "Parar" (também na planilha 1) para inserir a hora atual na Coluna E da Folha 2 (mesma linha que os dados usados para "início").

Por isso, é necessário:

Clique no botão Iniciar

  • Copie os valores A2 e B2 para a próxima linha em branco na Planilha 2
  • Na coluna C da mesma linha, insira a data atual
  • Na coluna D da mesma linha, insira a hora atual

Clique no botão Parar

  • Na (a mesma linha que os outros dados acabados de adicionar) na coluna E, introduza a hora atual

  • Ou a última linha D que tem uma hora atual de entrada de valor em E

Tentei usar isso:

'Start Button

'Determine emptyRow

ActiveWorkbook.Sheets("Sheet2").Select

emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1


'Transfer information

 Cells(emptyRow, 1).Value = A2.Value

 Cells(emptyRow, 2).Value = B2.Value

 Cells(emptyRow, 3).Value = Today().Value

 Cells(emptyRow, 4).Value = Time().Value

(Macro diferente)

'Stop Button

'Make Sheet2 active

 Sheet2.Activate

'Determine emptyRow

ActiveWorkbook.Sheets("Sheet").Select

emptyRow = WorksheetFunction.CountA(Range("E:E")) + 1


'Input Stop Time

 Cells(emptyRow, 5).Value = Time().Value

E usando isso:

'Start Button

Sheets(“Sheet1”).Select

Range(“A2”).Copy

Sheets(“Sheet2”).Select

emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

ActiveSheet.Paste

Eles não erraram, mas também não funcionaram, então sei que estou perdendo alguma coisa.

    
por Mel 29.08.2016 / 22:02

1 resposta

0

Eu fiz mais algumas leituras e ajustes e isso pode não ser o melhor caminho, mas funciona para o que eu preciso que o botão Iniciar faça.

Private Sub CommandButton1_Click()

Dim lst As Long
Sheets("Sheet1").Range("A2:B2").Copy
With Sheets("Sheet2")
    lst = .Range("A" & Rows.Count).End(xlUp).Row + 1
    .Range("A" & lst).PasteSpecial xlPasteColumnWidths
    .Range("A" & lst).PasteSpecial xlPasteValues
End With


With Sheets("Sheet2")
    lst = .Range("C" & Rows.Count).End(xlUp).Row + 1
    .Range("C" & lst).Value = Date
End With

With Sheets("Sheet2")
    lst = .Range("D" & Rows.Count).End(xlUp).Row + 1
    .Range("D" & lst).Value = Time()
End With


End Sub
    
por 31.08.2016 / 21:18