Akceptuj prawidłowe daty tylko od użytkownika w Excel VBA

Anonim

W moim ostatnim zadaniu musiałem zaakceptować dane wejściowe od użytkownika. Jedną z wartości wejściowych była data urodzenia i oczywiście musi to być data. To, co robiłem, to przechowywanie danych wejściowych w wariancie typu danych. Dzięki temu kod był wolny od błędów i akceptował każdą wartość podaną przez użytkownika. Poniżej kod:

Dim dob As Variant dob ​​= Application.InputBox("Wprowadź swoją datę urodzenia") 

Było to oczywiście błędne podejście, ponieważ użytkownik może wprowadzić dowolną wartość, która może nie być prawidłową datą.

Chcę, aby mój kod wykrywał każdą nieprawidłową datę i poprosił użytkownika o wprowadzenie prawidłowej daty i zakończenie podprogramu.

Oto kod, który pozwala użytkownikom wprowadzić tylko prawidłową datę jako dane wejściowe.

Sub check_date() Dim dob As Date W przypadku błędu GoTo Errorhandler dob = Application.InputBox("Wprowadź swoją datę urodzenia") W przypadku błędu GoTo 0 Debug.Print dob ​​Exit Sub Errorhandler: MsgBox "Wprowadź prawidłową datę." Napis końcowy 

Po uruchomieniu powyższego kodu zostaniesz poproszony o podanie daty urodzenia. Jeśli wprowadzisz nieprawidłową datę, zostaniesz poproszony o wprowadzenie prawidłowej daty i zakończenie procedury.

Jak to działa?

Pierwszą i najważniejszą rzeczą, jaką zrobiliśmy, jest użycie zmiennej typu Date do przechowywania oczekiwanej daty. Teraz, jeśli spróbujesz zapisać wartość, która nie jest prawidłową datą, wystąpi błąd „niezgodność typu”.

Następnie wyłapujemy ten błąd za pomocąW przypadku błędu Przejdź doobsługa błędów.

W przypadku błędu GoTo Errorhandler dob = Application.InputBox("Wprowadź swoją datę urodzenia") W przypadku błędu GoTo 0 

Używając On Error przeskakujemy kontrolkę do tagu Errorhandler, który znajduje się tuż przed instrukcją End Sub. Dlatego użytkownik jest proszony o wprowadzenie prawidłowej daty, a subskrypcja kończy się.

Errorhandler: MsgBox "Proszę wprowadzić poprawną datę." Napis końcowy 

Jeśli użytkownik wprowadzi poprawną datę, to sterowanie przepływa normalnie, a dane wejściowe są zapisywane w zmiennej dob. Umieściliśmy instrukcję Exit sub, aby kontrolka nie przechodziła do obsługi błędów i kończyła procedurę w tym miejscu. Więc umieść wszystkie instrukcje końcowe przed wyjściem sub. I to wszystko.

Więc tak, w ten sposób ograniczasz użytkownika do wprowadzania tylko prawidłowej daty. Daj mi znać, jeśli masz jakiekolwiek wątpliwości dotyczące dat VBA lub innych zapytań związanych z Excelem / VBA. Zapytaj nas w sekcji komentarzy poniżej.

Wstaw znacznik daty i czasu za pomocą VBA | Aby wprowadzić znacznik czasu, kiedy określona komórka została wypełniona przy użyciu tego kodu VBA. Jeśli wprowadzisz jakąkolwiek wartość w kolumnie A, sąsiednia komórka w kolumnie B wypełni się automatycznie czasem wpisu.

Data i czas w VBA | Znajdź wszystkie tematy dotyczące daty i godziny w VBA na tej stronie.

Jak możemy sformatować datę za pomocą VBA? | Dowiedz się, jak sformatować datę za pomocą VBA w programie Excel. Weźmy przykład, aby zrozumieć, jak i gdzie możemy sformatować komórkę w krótkim numerze daty.

Popularne artykuły:

50 skrótów Excela, które zwiększą Twoją produktywność | Przyspiesz swoje zadanie. Te 50 skrótów przyspieszy pracę w programie Excel.

Funkcja WYSZUKAJ.PIONOWO w programie Excel | Jest to jedna z najczęściej używanych i popularnych funkcji programu Excel, która służy do wyszukiwania wartości z różnych zakresów i arkuszy.

LICZ.JEŻELI w Excelu 2016 | Policz wartości z warunkami za pomocą tej niesamowitej funkcji. Nie musisz filtrować danych, aby policzyć konkretną wartość. Funkcja Countif jest niezbędna do przygotowania deski rozdzielczej.

Jak korzystać z funkcji SUMIF w programie Excel? | To kolejna ważna funkcja deski rozdzielczej. Pomaga to zsumować wartości w określonych warunkach.