Попытка создать таймер запуска / остановки с помощью макроса Excel
Я новичок в создании макросов в Excel и пытаюсь понять VBA, разбирая макросы, созданные другими.
Сейчас я пытаюсь создать своего рода таймер запуска / остановки, чтобы измерить, сколько времени тратится на разные проекты и на разные задачи внутри проектов.
Я хочу, чтобы мой пользователь выбрал проект (из выпадающего меню, созданного мной в A2) и тип задачи (также из выпадающего списка, расположенного в B2), а затем нажмите кнопку "Пуск" (все на листе 1). Затем будет запущен макрос, чтобы перенести эти два ввода в следующую доступную строку на листе 2 (столбцы A и B), а затем ввести текущую дату (столбец C) и текущее время (столбец D). Когда они закончили работать, они нажимают другую кнопку "Стоп" (также на листе 1), чтобы вставить текущее время в столбец Е листа 2 (та же строка, что и данные, использованные для "запуска").
Так что для этого нужно:
Нажмите на кнопку Пуск
- Скопируйте значения A2 и B2 в следующую пустую строку на листе 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