Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
annysven
1 / 1 / 0
Регистрация: 27.03.2014
Сообщений: 68
#1

Написать программу, проверяющую правильность ввода даты

02.06.2014, 00:24. Просмотров 933. Ответов 13
Метки нет (Все метки)

Написать программу, проверяющую правильность ввода даты (формат ввода: дд.мм.гг):
- введено нужное количество символов;
- дд и мм являются числами;
- 1 <= дд <= 31;
- 1<= мм <=12.
В случае неправильного ввода заставить пользователя повторить ввод. Если ввод прошел успешно, то введенная дата должно выдаваться в окне сообщения в виде списка:
День: дд;
Месяц: мм;
Год: гг.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2014, 00:24
Ответы с готовыми решениями:

Написать программу, проверяющую правильность ввода даты
Написать программу, проверяющую правильность ввода даты (формат ввода:...

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

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

Написать программу, проверяющую, является ли частью данного слова
1)Написать программу, проверяющую, является ли частью данного слова. Ответ...

Написать программу, проверяющую, можно ли из русских букв составить данное слово S
Двумерный массив n×m содержит некоторые буквы русского алфавита, расположенные...

13
Hugo121
6276 / 2379 / 401
Регистрация: 19.10.2012
Сообщений: 7,029
02.06.2014, 01:04 #2
31.02.14 - нормально будет?
Ну что числа они все, и что дд-мм в пределах нормы - можно проверить.
Но затем ещё бы нужно проверить на
If IsDate(s) Then
но в s добавьте год в формате гггг - иначе VBA примет и 31.02.14
0
annysven
1 / 1 / 0
Регистрация: 27.03.2014
Сообщений: 68
02.06.2014, 01:15  [ТС] #3
Вы можете программу готовлю написать?
0
S.V.I.N.
5 / 5 / 1
Регистрация: 06.04.2012
Сообщений: 38
02.06.2014, 10:04 #4
Лучший ответ Сообщение было отмечено annysven как решение

Решение

Привет!
Можно так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Test()
Dim Str, Mass() As String
Do
    Str = InputBox("Введите дату, в числовом формате.", "Ввод даты", Date)
    If IsDate(Str) = True Then
        Mass = Split(Str, ".")
        MsgBox "День: " & Mass(0) & vbCrLf & "Месяц: " & Mass(1) & vbCrLf & "Год: " & Mass(2)
        Exit Do
    Else
        If MsgBox("Введено ошибочное значение!" & vbCrLf & "Повторить ввод?", vbYesNo) = vbNo Then
            Exit Do
        End If
    End If
Loop
End Sub
0
Hugo121
6276 / 2379 / 401
Регистрация: 19.10.2012
Сообщений: 7,029
02.06.2014, 10:27 #5
S.V.I.N., 31.02.14 - нормальная дата?
0
S.V.I.N.
5 / 5 / 1
Регистрация: 06.04.2012
Сообщений: 38
02.06.2014, 13:01 #6
код работает верно, если указана полная дата (29.02.2014) - в этом случае обработка идет нормально.
Ну а что бы отбросить "обрезанные даты" (29.02.14) - достаточно включить проверку на длину даты (всегда должно быть равно 10 символам)

Visual Basic
1
2
3
if len (str) <> 10 then
   msgbox "Ошибка"
end if
0
Hugo121
6276 / 2379 / 401
Регистрация: 19.10.2012
Сообщений: 7,029
02.06.2014, 13:04 #7
Про полную дату я уже говорил:
Цитата Сообщение от Hugo121 Посмотреть сообщение
добавьте год в формате гггг - иначе VBA примет и 31.02.14
А в задаче требую вводить "формат ввода: дд.мм.гг" - так что в коде этот момент нужно обработать.
0
ikki
призрак
2823 / 879 / 118
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
02.06.2014, 15:03 #8
а зачем?
если год задан в формате гг, то VBA воспринимает годы от 0 до 29 как принадлежащие 21 веку и от 30 до 99 - 20 веку.
0
Hugo121
6276 / 2379 / 401
Регистрация: 19.10.2012
Сообщений: 7,029
02.06.2014, 15:08 #9
Саша, а ты проверь этот код с 31.02.14
0
ikki
призрак
2823 / 879 / 118
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
02.06.2014, 15:15 #10
пришлось запускать эксель. проверил. прокатывает.
даже "65.02.14" прокатывает.
молодчина VBA!

пс. заодно проверил: isdate("02.22.2014")
true, ессно!
так что никаких isdate. никому нельзя верить!
0
Sasha_Smirnov
5466 / 1306 / 143
Регистрация: 08.02.2009
Сообщений: 4,013
Записей в блоге: 29
02.06.2014, 20:42 #11
Не считая трений Busine2009 и Sasha_Smirnov, тоже в тему: Написать программу, проверяющую правильность ввода даты.

Не по теме:

Цитата Сообщение от Hugo121 Посмотреть сообщение
Саша, а ты…
Рад узнать, что мы с ikki тёзки!

0
Hugo121
02.06.2014, 22:54
  #12

Не по теме:

Вообще-то строго говоря он Александр - и может совсем и не Саша... Надеюсь Александр меня простит за вольность :)

0
ikki
02.06.2014, 23:02
  #13

Не по теме:

да лан, чё :D

0
korvindeson
1258 / 144 / 32
Регистрация: 11.02.2011
Сообщений: 414
03.06.2014, 10:26 #14
Когда-то занимался вопросом. Помоему не без глюков, но вроде пощёлкал, работает
0
Вложения
Тип файла: rar Работа с датами.rar (35.5 Кб, 16 просмотров)
03.06.2014, 10:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2014, 10:26

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

Написать процедуру, проверяющую наличие в семизначном числе повторяющихся цифр, и распечатывающую в замедленном режиме
Написать процедуру, выясняющую наличие в семизначном числе ...

Написать программу, проверяющую правильность расстановки скобок
1 «Арифметическое выражение». Исходные данные - арифметическое выражение....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru