Priimkite tinkamas datas tik iš vartotojo „Excel VBA“

Anonim

Atlikdamas paskutinę užduotį, turėjau priimti vartotojo įvestį. Viena įvesties vertė buvo gimimo data ir, žinoma, ji turi būti data. Ką aš dariau, tai įvesties saugojimas varianto tipo duomenyse. Dėl to kodas buvo be klaidų ir kodas priėmė bet kokią naudotojo pateiktą vertę. Žemiau yra kodas:

Dim dob As Variant dob ​​= Application.InputBox ("Įveskite savo gimimo datą") 

Žinoma, tai buvo neteisingas požiūris, nes vartotojas gali įvesti bet kokią vertę, kuri gali būti netinkama data.

Noriu, kad mano kodas aptiktų netinkamą datą ir paprašytų vartotojo įvesti teisingą datą ir užbaigti paprogramę.

Štai kodas, leidžiantis vartotojams įvesti tik galiojančią datą.

Sub check_date () Dim dob As Date On Error GoTo Errorhandler dob = Application.InputBox ("Įveskite savo gimimo datą") On Error GoTo 0 Debug.Print dob ​​Exit Sub Errorhandler: MsgBox "Prašome įvesti teisingą datą." Pabaiga Sub 

Kai paleisite aukščiau pateiktą kodą, jis paprašys įvesti savo gimimo datą. Jei įvesite netinkamą datą, ji paprašys įvesti teisingą datą ir užbaigti procedūrą.

Kaip tai veikia?

Pirmas ir svarbiausias dalykas, kurį mes padarėme, yra datos tipo kintamojo naudojimas numatomai datai išsaugoti. Dabar, jei bandysite išsaugoti vertę, kuri nėra tinkama data, bus padaryta klaida „tipo neatitikimas“.

Toliau mes pastebime šią klaidą naudodamiGoto klaidaklaidų tvarkytojas.

On Error GoTo Errorhandler dob = Application.InputBox ("Įveskite savo gimimo datą") Klaida GoTo 0 

Naudodami klaidą „Įjungta“, perkeliame valdiklį į žymos klaidų tvarkyklę, kuri yra prieš pat sakinį „Pabaiga“. Taigi vartotojo prašoma įvesti galiojančią datą, o antrinė dalis baigiasi.

Klaidų tvarkytojas: „MsgBox“ Įveskite tinkamą datą. Pabaiga Sub 

Jei vartotojas nurodo galiojančią datą, tada valdymas vyksta normaliai, o įvestis išsaugoma „dob“ kintamajame. Mes įdėjome antrinę išėjimo nuostatą, kad valdiklis nepatektų į klaidų tvarkyklę ir neužbaigtų procedūros. Taigi prieš išeinant iš antrinių dalių pateikite visus galutinius teiginius. Štai ir viskas.

Taigi taip, vaikinai, tokiu būdu jūs apribojate vartotoją įvesti tik tinkamą datą. Praneškite man, jei turite kokių nors abejonių dėl VBA datų ar kitų su „Excel“/VBA susijusių užklausų. Klauskite mūsų komentarų skiltyje žemiau.

Įdėkite datos ir laiko antspaudą su VBA | Norėdami įvesti laiko žymę, kai buvo užpildytas konkretus langelis, naudojant šį VBA kodą. Jei A stulpelyje įvesite bet kokią vertę, gretimas langelis B stulpelyje bus automatiškai užpildytas įvedimo laiku.

Data ir laikas VBA | Šiame puslapyje rasite visas temas apie datą ir laiką VBA.

Kaip galime formatuoti datą per VBA? | Sužinokite, kaip formatuoti datą naudojant „Excel“ VBA. Paimkime pavyzdį, kad suprastume, kaip ir kur galime formatuoti langelį trumpu datos numeriu.

Populiarūs straipsniai:

50 „Excel“ nuorodų, skirtų produktyvumui padidinti | Greičiau atlikite savo užduotį. Šie 50 sparčiųjų klavišų leis dar greičiau dirbti naudojant „Excel“.

„VLOOKUP“ funkcija „Excel“ | Tai yra viena iš dažniausiai naudojamų ir populiariausių „Excel“ funkcijų, naudojama norint ieškoti vertės iš įvairių diapazonų ir lapų.

COUNTIF „Excel 2016“ | Naudodami šią nuostabią funkciją, suskaičiuokite reikšmes su sąlygomis. Norint skaičiuoti konkrečią vertę, nereikia filtruoti duomenų. Skaitiklio funkcija yra būtina norint paruošti prietaisų skydelį.

Kaip naudoti „SUMIF“ funkciją „Excel“ | Tai dar viena esminė prietaisų skydelio funkcija. Tai padeda apibendrinti vertes konkrečiomis sąlygomis.