#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