0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 70
1

Дата и время в среде VBA

07.11.2016, 01:21. Показов 1948. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1. Сколько дней осталось до ближайшей пятницы, выпадающей на 13-е число?
2. Определите дату ближайшего воскресенья от заданной даты.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2016, 01:21
Ответы с готовыми решениями:

Как разделить колонку с форматом Дата/время на две - Дата и время
Здравствуйте. Подскажите пожалуйста, как разделить колонку с форматом Дата/время на две - Дата и...

Расписание. Хранит список (время начала, время окончания, дата, место, текст (комментарий)
Расписание. Хранит список (время начала, время окончания, дата, место, текст (комментарий))....

Разработать приложение «Аэропорт», включающую следующую информацию: дата, № рейса, время вылета, время прилета, пункт от
Разработать приложение «Аэропорт», включающую следующую информацию: дата, № рейса, время вылета,...

Написать скрипт, содержащий текущее время и дату в текстовых полях время и дата. Попробуйте создать изображени
Написать скрипт, содержащий текущее время и дату в текстовых полях время и дата. Попробуйте создать...

7
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
07.11.2016, 08:55 2
1.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub when_friday13()
Dim near_friday As Date, friday13 As Date, i As Integer
 
near_friday = Date + (13 - Weekday(Date)) Mod 7 'дата ближайшей ПТ, в т. ч. когда она сегодня
    
    For i = 7 To 434 Step 7
        If Day(friday13) = 13 Then MsgBox friday13: Exit For
        friday13 = near_friday + i 'каждый 7-й день пятница
    Next
    
MsgBox friday13 - Date 'это ответ
'Цикл Do…Loop был бы компактнее, но при отладке склонен к зависанию. 
End Sub

2.
Visual Basic
1
NextSunday=date+(8-weekday(date)) 'это именно ближайшее следующее ВС
Visual Basic
1
near_sunday = date+(8-weekday(date))mod 7 'это почти то же самое, но когда ВС сегодня - его дату и находит
(В этих примерах «заданная дата» — сегодня.)
2
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
07.11.2016, 09:42 3
Лучший ответ Сообщение было отмечено Sasha_Smirnov как решение

Решение

Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
но при отладке склонен к зависанию
Тогда так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub when_friday13()
    Dim near_friday As Date, d As Date
    near_friday = Date + (13 - Weekday(Date)) Mod 7 'дата ближайшей ПТ, в т. ч. когда она сегодня
    d = friday13(near_friday)
    MsgBox d
    MsgBox d - Date 'это ответ
End Sub
 
Function friday13(ByRef n As Date) As Date
    If Day(n) = 13 Then friday13 = n Else friday13 = friday13(n + 7)
End Function
2
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
07.11.2016, 23:51 4
Лучший ответ Сообщение было отмечено Sasha_Smirnov как решение

Решение

можно использовать цикл по месяцам, а не по неделям
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub bb()
Dim d As Date, m As Integer, y As Integer
  d = Date
  y = Year(d)
  For m = Month(d) - (Day(d) > 13) To 999
    d = DateSerial(y, m, 13)
    If Weekday(d, vbFriday) = 1 Then
      MsgBox "До ближайшей пятницы, 13: " & d & " оcталось дней: " & d - Date
      Exit Sub
    End If
  Next
End Sub
1
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 70
08.11.2016, 14:53  [ТС] 5
а как сделать?

Добавлено через 13 секунд
2. Определите дату ближайшего воскресенья от заданной даты.
0
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
09.11.2016, 14:21 6
Цитата Сообщение от Программист 123 Посмотреть сообщение
2. Определите дату ближайшего воскресенья от заданной даты.
Тебе Саша Смирнов два варианта дал. Выбирай любой. Что не нравится?
1
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 70
09.11.2016, 19:41  [ТС] 7
как это записать ?
0
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
09.11.2016, 23:48 8
Ну как я:
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
NextSunday=date+(8-weekday(date)) 'это именно ближайшее следующее ВС
А хотите — как-то иначе. Творчество только приветствуется!



Добавьте ещё (если вдруг сами не допёрли)
Visual Basic
1
MsgBox NextSunday 'и увидите ответ (дату следующего воскресенья)
Вот ещё для общего развития форматы дат и юлианский календарь: https://www.cyberforum.ru/blog... g1481.html
0
09.11.2016, 23:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2016, 23:48
Помогаю со студенческими работами здесь

Как убрать время из ячейки (время + дата)
Добрый день! Вновь обращаюсь к Вам в надежде на помощь. Имеется столбец А, в который внесены...

Время и дата. Время жизни программы
Сделал вывод даты в Edit, но столкнулся с проблемой, время не "идёт". AnsiString Days =...

Программирование в среде VBA (Excel)
Нам на учебе на практику задали одну задачу в excel на VBA, сам ни разу не изучал этот язык, так...

Динамическое программирование в среде VBA
Помогите написать VBA код решения следующей задачи: Cпуск с горы. --------7 -------3 8...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru