Попытка создать таймер запуска / остановки с помощью макроса Excel
2023
Mel
Я новичок в создании макросов в Excel и пытаюсь понять VBA, разбирая макросы, созданные другими.
Сейчас я пытаюсь создать своего рода таймер запуска / остановки, чтобы измерить, сколько времени тратится на разные проекты и на разные задачи внутри проектов.
Я хочу, чтобы мой пользователь выбрал проект (из выпадающего меню, созданного мной в A2) и тип задачи (также из выпадающего списка, расположенного в B2), а затем нажмите кнопку «Пуск» (все на листе 1). Затем будет запущен макрос, чтобы перенести эти два ввода в следующую доступную строку на листе 2 (столбцы A и B), а затем ввести текущую дату (столбец C) и текущее время (столбец D). Когда они закончили работать, они нажимают другую кнопку «Стоп» (также на листе 1), чтобы вставить текущее время в столбец Е листа 2 (та же строка, что и данные, использованные для «запуска»).
Так что нужно:
Нажмите на кнопку Пуск
Скопируйте значения A2 и B2 в следующую пустую строку на листе 2
В столбце C этой же строки введите текущую дату.
В столбце D той же строки введите текущее время
Нажмите на кнопку Стоп
В (в той же строке, что и другие только что добавленные данные) в столбце E введите текущее время
Или последняя строка D, которая имеет значение ввода текущего времени в E
Они не ошиблись, но и не сработали, так что я знаю, что что-то упустил.
Форматирование очень помогло бы ... я не понимаю, зачем вам нужен таймер. Что произойдет, если вы не нажмете стоп, когда делаете это в своем примере?
Dave 7 лет назад
0
«Они не ошиблись, но и не работали» - что они делают? Ваш вопрос сейчас очень расплывчатый. Пожалуйста, отладьте ваш код и сообщите нам, где он ведет себя неправильно.
Máté Juhász 7 лет назад
1
Этот набор кода не стал красным в окне редактирования и не привел к сообщению «ошибка / отладка». Когда я запускаю его, хотя (нажмите на кнопку, к которой он прикреплен), он не делает то, что я ожидаю (копировать / вставить). Насколько я могу судить, это никак не влияет ни на один из листов.
Mel 7 лет назад
0
Общая цель состоит в том, чтобы записать, сколько времени потрачено на разные проекты, а в рамках этих проектов - сколько времени потрачено на разные задачи. С помощью кнопок «Пуск» и «Стоп» создается текущий журнал времени запуска / остановки для проектов / задач. Эти данные затем поступают на другой лист (который основан на «традиционной» формуле), который объединяет все точки данных в сводную информацию, основанную на проекте / задаче.
Mel 7 лет назад
0
Если кто-то не нажимает кнопку «Стоп» в конце, эта точка данных (строка) становится «бесполезной» (или позже ее придется манипулировать вручную). Поэтому E (время остановки), вероятно, должно смотреть на последнюю строку со значением в D (время начала), в отличие от "следующей пустой ячейки в E". Если я смогу настроить базовую настройку на работу, я всегда мог бы добавить что-нибудь позже, чтобы выскочить сообщение, если вы попытаетесь закрыть книгу или снова нажать кнопку «Пуск», не нажимая сначала кнопку «Стоп» (хотя это не так важно) ,
Mel 7 лет назад
0
1 ответ на вопрос
0
Mel
Я еще немного почитал и повозился, и это, возможно, не самый лучший способ, но он работает для того, что мне нужно для кнопки «Пуск».
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