尝试使用 Excel 宏创建启动/停止计时器

尝试使用 Excel 宏创建启动/停止计时器

我是 Excel 中创建宏的新手,一直试图通过解析其他人创建的宏来理解 VBA。

我现在尝试创建的是某种启动/停止计时器,用于测量在不同项目以及项目内的不同任务上花费了多少时间。

我希望我的用户选择项目(从我创建的位于 A2 的下拉菜单中选择)和任务类型(同样从位于 B2 的下拉菜单中选择),然后单击按钮“开始”(全部位于工作表 1 上)。然后,这将运行一个宏,将这两个输入传输到工作表 2 上的下一个可用行(A 列和 B 列),然后输入当前日期(C 列)和当前时间(D 列)。完成工作后,他们单击另一个按钮“停止”(同样位于工作表 1 上),将当前时间插入到工作表 2 的 E 列(与用于“开始”的数据相同的行)。

因此它需要:

单击“开始”按钮

  • 将 A2 和 B2 值复制到 Sheet 2 中的下一个空白行
  • 在同一行的 C 列输入当前日期
  • 在同一行的 D 列输入当前时间

点击停止按钮

  • 在 E 列(与刚刚添加的其他数据同一行)输入当前时间

  • 或者最后一行 D 中有一个值输入 E 中的当前时间

我尝试使用这个:

'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

(不同的宏)

'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

并使用这个:

'Start Button

Sheets(“Sheet1”).Select

Range(“A2”).Copy

Sheets(“Sheet2”).Select

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

ActiveSheet.Paste

它们没有出错,但也没有工作,所以我知道我遗漏了一些东西。

答案1

我做了更多的阅读和修改,这可能不是最好的方法,但它可以满足我对“开始”按钮的要求。

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

相关内容