Как записывать время на редактирование ячейки в Excel

Я работаю над файлом excel для использования в моем классе перевода. У меня нет навыков программирования. Мне нужна ваша поддержка для академической цели. В этом превосходстве я хочу измерить, сколько времени мои ученики потратили на редактирование ячейки в качестве второго. Действительно, я нашел формулу, в которой я мог бы регистрировать время редактирования предложения:

Private Sub Worksheet_Change(ByVal Target As Range) 'Update 20140722 Dim WorkRng As Range Dim Rng As Range Dim xOffsetColumn As Integer Set WorkRng = Intersect(Application.ActiveSheet.Range("C:C"), Target) xOffsetColumn = 1 If Not WorkRng Is Nothing Then Application.EnableEvents = False For Each Rng In WorkRng If Not VBA.IsEmpty(Rng.Value) Then Rng.Offset(0, xOffsetColumn).Value = Now Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh:mm:ss" Else Rng.Offset(0, xOffsetColumn).ClearContents End If Next Application.EnableEvents = True End If End Sub 

Теперь я хочу найти разницу между вводом ячейки в ячейку для редактирования ячейки и завершения редактирования.

Большое спасибо!

Несколько иной подход. Создайте новый лист, скажем EditLog чтобы он выглядел следующим образом:

введите описание изображения здесь

Затем на любом листе, где вы хотите записать время, введите следующий код:

 Private Sub Worksheet_Activate() Dim R As Range Set R = Sheets("EditLog").Cells(Rows.Count, 1).End(xlUp) R.Offset(1, 0).Value = Selection.Parent.Name R.Offset(1, 1).Value = Selection.Address R.Offset(1, 2).Value = Now End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim R As Range Set R = Sheets("EditLog").Cells(Rows.Count, 1).End(xlUp) R.Offset(1, 0).Value = Target.Parent.Name R.Offset(1, 1).Value = Target.Address R.Offset(1, 2).Value = Now End Sub Private Sub Worksheet_Change(ByVal Target As Range) Dim R As Range, seconds As Long Set R = Sheets("EditLog").Cells(Rows.Count, 1).End(xlUp) R.Offset(0, 3).Value = Now seconds = DateDiff("s", R.Offset(0, 2).Value, R.Offset(0, 3).Value) R.Offset(0, 4).Value = seconds End Sub 

Затем, когда вы редактируете лист (в моих экспериментах я редактировал лист 1), через некоторое время EditLog выглядит примерно так:

введите описание изображения здесь

Я сделал так, чтобы активная ячейка, когда лист был сначала активирован, регистрируется как введенный. Это делается для того, чтобы избежать сбоев в синхронизации, если пользователь начинает редактировать ячейку, не переключаясь сначала на нее. Но – как артефакт, он вызывает несколько пустых строк, если первая ячейка остается без изменения.

отредактирован, чтобы избежать использования вспомогательной ячейки

отредактировано2 после уточнения вопроса OP

это должно

 Dim startTime As Single Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Cells(Target.row, 1) = Timer - startTime Application.EnableEvents = true End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) startTime = Timer End Sub 

для размещения в соответствующем поле панели

этот код сохраняет значение функции Timer когда пользователь выбирает новую ячейку

то, как только пользователь покинет ячейку, изменив ее содержимое, он записывает прошедшее время в первом столбце отредактированной строки ячейки

вы можете настроить его, чтобы управление таймером выполнялось только тогда, когда определенная ячейка находится под редактированием

  • Макрос приложения.SendKeys выполняется слишком медленно. Как улучшить скорость?
  • Интерконвертирование POSIXct и числовое значение в R
  • От многих до многих пользователей взаимоотношений во время входа / выхода - как сделать масштабируемый расчет общего времени использования?
  • Если выражение, использующее формат времени в Excel
  • IF время между двумя значениями возврата
  • Сценарий VB не может получить доступ к файлу
  • Как переключиться с PM / AM на 24h в Excel с помощью VBA
  • Формат Excel VBA как десятичный с Combobox
  • MySQL для Excel TIME Column
  • Excel конвертирует десятичные знаки в Time
  • Преобразование времени OpenOffice Calc
  • Давайте будем гением компьютера.