Код, из-за которого формула не работает должным образом

#excel #excel-formula #excel-2007 #vba

#excel #excel-формула #excel-2007 #vba

Вопрос:

У меня есть рабочий лист с именем data и несколько рабочих листов в одной книге, которые являются именами сотрудников.

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

На листе данных столбец A — это имя работников, столбец B — задачи, назначенные за последние 30 дней, столбец C — задачи, назначенные за последние 7 дней, столбец D — дата / время, назначенное за последний 1 час, а столбец E — дата / время, когда была назначена последняя задача.

В отдельных рабочих листах персонала следующий код позволяет, когда что-то вводится в столбце B, дата и время автоматически вводятся в столбце E.

Вот код:

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Columns("B:B")) Is Nothing Then
        Target.Offset(0, 3).Value = Format(Now, "mm dd yyyy h:mm")
    End If
End Sub
  

Моя проблема в том, что, поскольку я ввел этот код, информация в таблице данных в столбцах B, C, D и E неверна.

Он не учитывает информацию в отдельных штатных расписаниях.

Формулы работали до того, как я добавил код.

Например, у Эми было 3 отчета за последние 30 дней до того, как я добавил код.

С момента добавления кода она получила еще 4 отчета.

В столбце B в таблице данных должно быть указано 7, однако он по-прежнему показывает 3.

Любая помощь в этом вопросе очень ценится.

Ответ №1:

Я подозреваю, что проблема в том, что ваши метки даты / времени не сохраняются как реальные даты. Попробуйте использовать:

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Columns("B:B")) Is Nothing Then
        with Target.Offset(0, 3)
          .Value = Now
          .Numberformat = "mm dd yyyy h:mm"
        end with
    End If
End Sub