Я новичок в создании макросов в 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 ответ1

0

Я еще немного поработал над чтением и мастерингом, и это может быть не лучшим способом, но он работает для того, что мне нужно для кнопки «Пуск».

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .