I min senaste uppgift var jag skyldig att acceptera input från användaren. Ett ingångsvärde var födelsedatum och det måste naturligtvis vara ett datum. Det jag gjorde är att lagra ingången i en datatyp av en variant. Detta gjorde koden felfri och koden accepterade något värde som användaren gav. Nedan är koden:
Dim dob As Variant dob = Application.InputBox ("Ange ditt födelsedatum")
Detta var naturligtvis ett felaktigt tillvägagångssätt eftersom användaren kan mata in alla värden som kanske inte är ett giltigt datum.
Vad jag vill är att få min kod att upptäcka ett ogiltigt datum och be användaren att ange ett giltigt datum och avsluta underrutinen.
Här är koden som tillåter användare att bara ange ett giltigt datum som inmatning.
Sub check_date () Dim dob As Date On Error GoTo Errorhandler dob = Application.InputBox ("Ange ditt födelsedatum") Vid fel GoTo 0 Debug.Print dob Exit Sub Errorhandler: MsgBox "Ange ett giltigt datum." Avsluta Sub
När du kör ovanstående kod kommer den att be dig att ange ditt födelsedatum. Om du anger ett ogiltigt datum kommer det att be dig att ange ett giltigt datum och avsluta proceduren.
Hur fungerar det?
Det första och viktigaste vi har gjort är att använda datumtypvariabeln för att lagra det förväntade datumet. Om du nu försöker lagra ett värde som inte är ett giltigt datum kommer det genom ett fel med "typmatchning".
Därefter får vi upp detta fel med hjälp avVid fel Gå tillfelhanterare.
On Error GoTo Errorhandler dob = Application.InputBox ("Ange ditt födelsedatum") Vid fel GoTo 0
Med On On Error hoppar vi över kontrollen till taggen Errorhandler, som ligger strax före End Sub -satsen. Så användaren uppmanas att ange ett giltigt datum och suben slutar.
Felhandlare: MsgBox "Ange ett giltigt datum." Avsluta Sub
Om användaren anger ett giltigt datum, flödar kontrollen normalt och ingången sparas i dob -variabel. Vi har lagt ut Exit -deluttalandet så att kontrollen inte går till felhanteraren och avslutar proceduren just där. Så lägg dina alla slututtalanden före avsluta sub. Och det är allt.
Så ja killar, så här begränsar du användaren till att bara ange ett giltigt datum. Låt mig veta om du har några tvivel angående VBA -datum eller någon annan Excel/VBA -relaterad fråga. Fråga oss i kommentarsfältet nedan.
Infoga datumstämpel med VBA | För att ange tidsstämpeln när en specifik cell fylldes med denna VBA -kod. Om du anger ett värde i kolumn A fylls den intilliggande cellen i kolumn B med tidpunkten för inmatning automatiskt.
Datum och tid i VBA | Hitta alla ämnen om datum och tid i VBA på den här sidan.
Hur kan vi formatera datum via VBA? | Lär dig hur du formaterar datum med VBA i Excel. Låt oss ta ett exempel för att förstå hur och var vi kan formatera cellen i kort datumnummer.
Populära artiklar:
50 Excel -genvägar för att öka din produktivitet | Bli snabbare på din uppgift. Dessa 50 genvägar får dig att arbeta ännu snabbare med Excel.
VLOOKUP -funktionen i Excel | Detta är en av de mest använda och populära Excel -funktionerna som används för att leta upp värde från olika intervall och ark.
COUNTIF i Excel 2016 | Räkna värden med förhållanden med denna fantastiska funktion. Du behöver inte filtrera dina data för att räkna specifikt värde. Countif -funktionen är avgörande för att förbereda din instrumentpanel.
Hur man använder SUMIF -funktionen i Excel | Detta är en annan viktig instrumentpanel. Detta hjälper dig att summera värden på specifika förhållanden.