В моей недавней задаче от меня требовалось принимать ввод от пользователя. Одним из входных значений была дата рождения, и это, конечно же, должна быть дата.

То, что я делал, сохранял ввод в виде вариантного типа данных. Это сделало код безошибочным, и он принимал любые значения, которые давал пользователь. Ниже приведен код:

Dim dob As Variant

dob = Application.InputBox("Enter Your Date of Birth")

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

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

Вот код, который позволяет пользователям вводить только действительную дату.

Sub check_date()

Dim dob As Date

On Error GoTo Errorhandler

dob = Application.InputBox("Enter Your Date of Birth")

On Error GoTo 0

Debug.Print dob

Exit Sub

Errorhandler:

MsgBox "Please enter a valid date."

End Sub

Когда вы запустите указанный выше код, он попросит вас ввести дату вашего рождения. Если вы введете неправильную дату, вам будет предложено ввести действительную дату и завершить процедуру.

imageHow does it work?* The first and most important thing we have done is to use the Date type variable to store the expected date. Now, if you try to store a value that is not a valid date, it will through an error of «type mismatch».

Затем мы перехватываем эту ошибку с помощью обработчика ошибок On Error Goto *.

On Error GoTo Errorhandler

dob = Application.InputBox("Enter Your Date of Birth")

On Error GoTo 0

Используя On Error, мы переходим к тегу Errorhandler, который находится непосредственно перед оператором End Sub. Таким образом, пользователя просят ввести действительную дату, и подпрограмма заканчивается.

Errorhandler:

MsgBox "Please enter a valid date."

End Sub

Если пользователь вводит действительную дату, управление проходит нормально, и ввод сохраняется в переменной dob. Мы поместили подоператор Exit, чтобы элемент управления не попал в обработчик ошибок и сразу же завершил процедуру. Так что поместите все конечные операторы перед exit sub. И это все.

Так что да, ребята, вот как вы ограничиваете пользователя вводить только действительную дату.

Сообщите мне, если у вас есть какие-либо сомнения относительно дат VBA или любого другого запроса, связанного с Excel / VBA. Задайте нам вопрос в разделе комментариев ниже.

Статьи по теме:

link: / vba-insert-date-time-stamp-with-vba [Вставить отметку даты и времени с помощью VBA] | Чтобы ввести метку времени, когда определенная ячейка была заполнена с использованием этого кода VBA. Если вы введете любое значение в столбец A, соседняя ячейка в столбце B автоматически заполнится временем ввода.

`link: / excel-macros-and-vba-date-time-in-vb [Дата и время в VBA] | Найдите все темы о дате и времени в VBA на этой странице.

Популярные статьи:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-вашу-продуктивность [50 комбинаций клавиш Excel для повышения вашей продуктивности] | Выполняйте свою задачу быстрее. Эти 50 ярлыков заставят вас работать в Excel еще быстрее.

link: / формулы-и-функции-введение-функции-vlookup [Функция ВПР в Excel] | Это одна из наиболее часто используемых и популярных функций Excel, которая используется для поиска значений из разных диапазонов и листов. link: / tips-countif-in-microsoft-excel [COUNTIF в Excel 2016] | Подсчитайте значения с условиями, используя эту удивительную функцию. Вам не нужно фильтровать данные для подсчета определенного значения.

Функция Countif важна для подготовки вашей приборной панели.

link: / excel-formula-and-function-excel-sumif-function [Как использовать функцию СУММЕСЛИ в Excel] | Это еще одна важная функция приборной панели. Это поможет вам суммировать значения для конкретных условий.