Приемайте валидни дати само от потребител в Excel VBA

Anonim

В скорошната ми задача бях длъжен да приема вход от потребителя. Една въведена стойност беше датата на раждане и тя, разбира се, трябва да е дата. Това, което правех, е да съхранявам входа във вариант тип данни. Това направи кода без грешки и кодът приемаше всяка стойност, която потребителят дава. По -долу е кодът:

Dim dob като вариант dob = Application.InputBox ("Въведете вашата дата на раждане") 

Това, разбира се, беше неправилен подход, тъй като потребителят може да въведе всяка стойност, която може да не е валидна дата.

Това, което искам, е да накарам кода ми да открие всяка невалидна дата и да помоля потребителя да въведе валидна дата и да прекрати подпрограмата.

Ето кода, който позволява на потребителите да поставят само валидна дата като вход.

Sub check_date () Dim dob As Date On Error GoTo Errorhandler dob = Application.InputBox ("Въведете вашата дата на раждане") On Error GoTo 0 Debug.Print dob ​​Exit Sub Errorhandler: MsgBox "Моля, въведете валидна дата." End Sub 

Когато стартирате горния код, той ще ви помоли да въведете датата си на раждане. Ако въведете невалидна дата, тя ще ви помоли да въведете валидна дата и да прекратите процедурата.

Как работи?

Първото и най -важно нещо, което направихме, е да използваме променливата Тип дата за съхраняване на очакваната дата. Сега, ако се опитате да съхраните стойност, която не е валидна дата, това ще стане чрез грешка на „тип несъответствие“.

След това улавяме тази грешка с помощта наПри грешка Отидетеманипулатор на грешки.

On Error GoTo Errorhandler dob = Application.InputBox ("Въведете вашата дата на раждане") On Error GoTo 0 

Използвайки On Error, прескачаме контролата до етикета Errorhandler, който е точно преди оператора End Sub. Така потребителят е помолен да въведе валидна дата и подзавършва.

Манипулатор на грешки: MsgBox "Моля, въведете валидна дата." End Sub 

Ако потребителят постави валидна дата, тогава контролът протича нормално и входът се записва в променливата dob. Поставихме подзаявлението Exit, така че контролата да не премине към обработчика на грешки и да приключи процедурата точно там. Затова поставете всички крайни изявления преди излизане от sub. И това е.

Така че да, момчета, по този начин ограничавате потребителя да въвежда само валидна дата. Кажете ми, ако имате някакви съмнения относно датите на VBA или друго запитване, свързано с Excel/VBA. Попитайте ни в секцията за коментари по -долу.

Вмъкнете дата и час с VBA | За да въведете времевата отметка, когато определена клетка е попълнена с помощта на този код VBA. Ако въведете каквато и да е стойност в колона А, съседната клетка в колона В ще се запълни автоматично с часа на въвеждане.

Дата и час във VBA | Намерете всички теми за Дата и час във VBA на тази страница.

Как можем да форматираме дата чрез VBA? | Научете как да форматирате дата с помощта на VBA в Excel. Нека вземем пример, за да разберем как и къде можем да форматираме клетката в кратък номер на дата.

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

50 преки пътища в Excel за повишаване на вашата производителност | Бъдете по -бързи в задачата си. Тези 50 преки пътища ще ви накарат да работите още по -бързо в Excel.

Функцията VLOOKUP в Excel | Това е една от най -използваните и популярни функции на excel, която се използва за търсене на стойност от различни диапазони и листове.

COUNTIF в Excel 2016 | Пребройте стойностите с условия, използвайки тази невероятна функция. Не е необходимо да филтрирате данните си, за да преброите конкретна стойност. Функцията Countif е от съществено значение за подготовката на вашето табло.

Как да използвате функцията SUMIF в Excel | Това е друга основна функция на таблото. Това ви помага да обобщите стойностите при конкретни условия.