Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Не правильно считает дни - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не правильно считает дни (Макросы/Sub)
Не правильно считает дни
ih8teuval Дата: Понедельник, 28.03.2022, 19:30 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 20% ±

Здравствуйте, такая проблема мне нужно было написать макрос который будет считать сколько осталось времени до конца договора.
Вот само задание:
Среда разработки: Microsoft Excel
Входные данные (отдельные ячейки для ввода ):
Дата начала действия договора: формат dd.mm.yyyy
Время начала действия договора формат: hh.mm.ss
Время (длительность) действия договора (для каждого поля отдельная ячейка для ввода):
Года: yyyy
Месяца: mm
Дни: dd
Часы: hh
Минуты: mm
Секунды: ss
Текущее время и дата (ячейки для ввода):
Дата : формат dd.mm.yyyy
Время : hh.mm.ss

Задача:
Создать кнопку.
По нажатию кнопки посчитать и вывести количество оставшегося времени действия договора от текущего момента время.
(Взять начало договора приплюсовать длительность действия договора и рассчитать сколько осталось в Годах, месяцах, днях, часах, минутах и секундах до конца и вывести в ячейки)
Выходные данные ( для каждого поля отдельная ячейки для вывода):
Года: yyyy
Месяца: mm
Дни: dd
Часы: hh
Минуты: mm
Секунды: ss

есть такой макрос:
[vba]
Код
Sub Fg()
Dim A As Date, B As Date, I As Date, J As Date
Dim C As Integer, D As Integer, E As Integer, F As Integer, G As Integer, H As Integer
A = Range("C1").Value
B = Range("C2").Value
C = Range("C11").Value
D = Range("C12").Value
E = Range("C13").Value
F = Range("C14").Value
G = Range("C15").Value
H = Range("C16").Value
I = Range("C7").Value
J = Range("C8").Value
StartDate = DateValue(A) + TimeValue(B)
TheEndOfContract = DateAdd("yyyy", C, StartDate)
TheEndOfContract1 = DateAdd("m", D, TheEndOfContract)
TheEndOfContract2 = DateAdd("y", E, TheEndOfContract1)
TheEndOfContract3 = DateAdd("h", F, TheEndOfContract2)
TheEndOfContract4 = DateAdd("n", G, TheEndOfContract3)
TheEndOfContract5 = DateAdd("s", H, TheEndOfContract4)
[C6] = TheEndOfContract5
CurrentDate = DateValue(I) + TimeValue(J)
[C9] = CurrentDate
T = Range("C6").Value - Range("C9").Value
[C4] = DateValue(TheEndOfContract5)
[C5] = TimeValue(TheEndOfContract5)

[B40] = T
N = T * 86400
[B41] = N
[C18] = N \ 31536000
[C19] = (N Mod 31536000) \ 2629743
[C20] = (N Mod 2629743) \ 86400
[C21] = (N Mod 86400) \ 3600
[C22] = (N Mod 3600) \ 60
[C23] = N Mod 60

End Sub
[/vba]

но он не учитывает, что в феврале 28 дней, помогите пожалуйста)
К сообщению приложен файл: 3604370.jpg (44.9 Kb)
 
Ответить
СообщениеЗдравствуйте, такая проблема мне нужно было написать макрос который будет считать сколько осталось времени до конца договора.
Вот само задание:
Среда разработки: Microsoft Excel
Входные данные (отдельные ячейки для ввода ):
Дата начала действия договора: формат dd.mm.yyyy
Время начала действия договора формат: hh.mm.ss
Время (длительность) действия договора (для каждого поля отдельная ячейка для ввода):
Года: yyyy
Месяца: mm
Дни: dd
Часы: hh
Минуты: mm
Секунды: ss
Текущее время и дата (ячейки для ввода):
Дата : формат dd.mm.yyyy
Время : hh.mm.ss

Задача:
Создать кнопку.
По нажатию кнопки посчитать и вывести количество оставшегося времени действия договора от текущего момента время.
(Взять начало договора приплюсовать длительность действия договора и рассчитать сколько осталось в Годах, месяцах, днях, часах, минутах и секундах до конца и вывести в ячейки)
Выходные данные ( для каждого поля отдельная ячейки для вывода):
Года: yyyy
Месяца: mm
Дни: dd
Часы: hh
Минуты: mm
Секунды: ss

есть такой макрос:
[vba]
Код
Sub Fg()
Dim A As Date, B As Date, I As Date, J As Date
Dim C As Integer, D As Integer, E As Integer, F As Integer, G As Integer, H As Integer
A = Range("C1").Value
B = Range("C2").Value
C = Range("C11").Value
D = Range("C12").Value
E = Range("C13").Value
F = Range("C14").Value
G = Range("C15").Value
H = Range("C16").Value
I = Range("C7").Value
J = Range("C8").Value
StartDate = DateValue(A) + TimeValue(B)
TheEndOfContract = DateAdd("yyyy", C, StartDate)
TheEndOfContract1 = DateAdd("m", D, TheEndOfContract)
TheEndOfContract2 = DateAdd("y", E, TheEndOfContract1)
TheEndOfContract3 = DateAdd("h", F, TheEndOfContract2)
TheEndOfContract4 = DateAdd("n", G, TheEndOfContract3)
TheEndOfContract5 = DateAdd("s", H, TheEndOfContract4)
[C6] = TheEndOfContract5
CurrentDate = DateValue(I) + TimeValue(J)
[C9] = CurrentDate
T = Range("C6").Value - Range("C9").Value
[C4] = DateValue(TheEndOfContract5)
[C5] = TimeValue(TheEndOfContract5)

[B40] = T
N = T * 86400
[B41] = N
[C18] = N \ 31536000
[C19] = (N Mod 31536000) \ 2629743
[C20] = (N Mod 2629743) \ 86400
[C21] = (N Mod 86400) \ 3600
[C22] = (N Mod 3600) \ 60
[C23] = N Mod 60

End Sub
[/vba]

но он не учитывает, что в феврале 28 дней, помогите пожалуйста)

Автор - ih8teuval
Дата добавления - 28.03.2022 в 19:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не правильно считает дни (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!