Kiszámítása dátumok

Kiszámítása dátumok

Ez a könyv segít elsajátítani a VBA integrált fejlesztői környezet, és megtanulják, hogyan kell programozni a VBA-ban a tárgyak használata, azok tulajdonságait, módszerek és eseményeket. Vizsgálat programozási technikák olyan példák illusztrálják, amelyek segítségével azonnal kipróbálni a gyakorlatban. A megszerzett tudás lesz képes alkalmazni a kiigazítás és javítása népszerű Office alkalmazások, többek között az Office XP alkalmazások és a saját alkalmazásokat.

A könyv azoknak készült, akik mennek gyorsan és könnyedén megtanulják, hogyan kell programozni a Windows, a VBA.

Könyv: VBA kezdőknek

Kiszámítása dátumok

Mint tudja, az idő - egy relatív fogalom. Tehát a lényeg -, hogy a dátum és az idő ebben a formában, hogy összehasonlítsuk őket más dátumát és időpontját. Néha szükség van arra, hogy milyen távol egy időpontban egy másik, illetve egy alkalommal a másik. És néha meg kell tudni, hogy mi a dátum, mondjuk, két év és három hónap. Számos javaslatot VBA funkciók kezelésére dátum és idő értékeket alakítjuk kiszámításához dátumokat egy nagyon egyszerű dolog.

Használja DateAdd funkciót, amikor szükség van, hogy megtudja, mi a dátum jön három évig, vagy mi volt az óra egy óra tizenöt perce. Az ilyen számítások nélkül is elvégezhető a számítógép minden, de különleges figyelmet igényel, mivel működése egyes komponensek értékei a dátumok és időpontok nem tartozik a szokásos szabályok számtani tizedes számok (a hét napjai - 7 másodperc - 60 stb), és maguk alkatrészek gépelt sok.

DateAdd függvény szintaxisa a következő: DateAdd (intervallum, szám, start_date).

A visszatérési érték a függvény értéke egyenlő érjük el, hogy a kezdeti időpontban (vagy kezdési idő) egy előre meghatározott intervallumok számát. Ha szüksége van egy különbség, hanem a meghatározott összeget az érvvel a több negatív értéket. Táblázat. 11.5 egy sor karakter kódok érvényesek az érvelés intervallum (a ne felejtsük el, hogy írja alá a megfelelő kódot idézőjelek nélkül).

Táblázat 11.5. Az értékek függvényargumentumok és DateAdd DatDiff

Például eredményeként operátor

datBylo = DateAdd ( "s", -90, most)

datBylo változó fogja tartalmazni a megfelelő értéket az idő, amely 90 másodperccel ezelőtt az aktuális időt. Ha azt szeretnénk, hogy megjelenjen csak azt a részét az értéket a képernyőn, ami arra az időre utal, használja a Format funkciót egy megfelelő időben argumentum formátuma (pl Format (datBylo, „közepes idő”)), amint azt a „formázás dannk” részben.

A rendszer segítségével a függvény DateAdd lehet hozzáadni vagy kivonni egy bizonyos számú hasonló időközönként, de például, hogy meghatározza azt a dátumot, amely két év és három hónappal ezelőtt, semmi sem akadályozza a funkció használatához kétszer.

Alternatívaként a VBA kínál a dátum és az idő két egyéb funkciókat, amelyek lehetővé teszik, hogy keverjük időközönként - Dátum soros és TimeSerial. Ezeket a funkciókat három érv;

DateSerial (év, hónap, nap]

TimeSerial (óra, perc, másodperc)

Minden érv ebben az esetben kötelező, és kell, hogy legyen kifejezést használjuk, így egész értékeket (és nem az érték dátum típusú). Nézd, ha azt mondják, hogy meg fogja kapni eredményeként a következő kódrészletet, és figyelni, hogy a számítás a harmadik érv:

datNovoeTysyacheletie = DateSerial (intGod, intMesyats, intDen + 1)

És természetesen, minden ezeket az érveket, vagy akár az összes, lehet, hogy csak számokat.

Használja a DateDiff funkciója, hogy meghatározza, hogy mennyi az egyes időintervallumokban (év, hónap, hét, stb) van a két megadott dátumok vagy időpontok. Például:

lngSkolko = DateDiff ( "m", # 2/12/90 #, # 10/12/01 #)

Ennek eredményeként a változó lngSkolko szereplő - változó típusú Long - tartalmazza a hónapok számát két megadott dátumokat. Az első érv a funkció DateDiff igényel kód intervallum, és ebben az esetben az „m” mondja a funkció, amit be kell mérni hónap helyett években, hetek vagy bármely más egységek.

A következő eljárás a függvény DateSerial funkciója és DateDiff kiszámításához a személy életkorát években. A hibák elkerülése érdekében a program végrehajtásához adhat a kód ellenőrzi az adatokat érték típusát, amely kap egy érv, hogy meghatározza a születési dátum (használja a IsDate funkció), valamint annak ellenőrzése, hogy a beérkezett születési dátum nem a jövőben.

Funkció WhatAge (dateDateOfBirth dátum)

Dim intAge As Integer „set Long, hogy megakadályozzák kor> 255 intAge = DateDiff ( "yyyy", DateDateOfBirth, dátum)

Csekkek születésnapját idén volt-e vagy sem:

Ha DateSerial (Year (Date), a hónap (DateDateOfBirth), _

Day (DateDateOf Született))> Date Aztán

intAge = intAge - 1

Mivel a, hogy úgy mondjam, egy parazita életmódot nagy alkalmazások VBA programok gyakran nem igényel semmilyen felhasználói felület elemeit (párbeszédpanelek, menük, stb) - Amikor futtatja a VBA-program alapján végrehajtott az aktuális alkalmazás dokumentum megfelelő saját akció a jelen dokumentum tartalmát.

Nyilvánvaló azonban, és az a tény, hogy sok olyan helyzet megkívánja a közvetlen interakció a végfelhasználó VBA-programot. Kitűnő lehetőség, hogy interaktív ablakot a programban hez létrehozásának eszközévé VBA egyéni formák (amit tárgyalt 10. fejezet), de ha többre is képes, mint egyszerű eszközökkel, hogy az egyszerűbb, annál jobb.

Két VBA-funkciók, MsgBox és beviteli mezőbe nyújt jó lehetőséget kiindulási üzeneteket küldeni a felhasználó és választ kapjanak tőle.

* MsgBox függvény az üzenet boxban, de nem csak - ez lehetővé teszi, hogy meghatározza, hogy a két (vagy több) gombokkal a felhasználó kattintott az ablak bezárásához.

* A beviteli mezőbe az üzenet boxban és a terület, ahol a felhasználó képes nyomtatni a választ.

Formálisan, a szintaxis MsgBox függvény kialakítása a következő:

MsgBox (üzenet [, gombok] [, cím] [fayl_spravki, rész])

Mivel a zárójelben kötelező egyetlen érv egy üzenet, ami nyilvánvalóan meghatározza azt az üzenetet kívánja megjeleníteni a képernyőn.

A legegyszerűbb formában MsgBox függvény működik az operátor. Csak akkor kell kinyomtatni külön sorban, és adjuk hozzá a kívánt üzenetet megjeleníteni. Például:

MsgBox „Ez egy teszt MsgBox munkát.”

Ennek eredményeként az ilyen VBA vonal jelenik meg a képernyőn egy üzenet doboz, mint az egyik ábrán látható. 11.2 (A példa).

Ábra. 11.2. Három egyszerű üzenet mezőbe

Az üzenet szövege zárójelek között, de merevítők opcionálisak, ha a funkció használható operátor.

Az üzenet lehet egy változó vagy egy kifejezést. Mint általában, VBA automatikusan átalakítja az Ön számára, számértékek és dátumok jelennek meg karakter. Például, a következő kódrészletet jól működik, és az eredményt ábrán látható. 11,2 (B példa):

datWhen = Format (Now "Rövid dátum")

strInfo2 = "left vágyak"

MsgBox strlInfol datWhen strInf o2 intWishCount

Ahhoz, hogy egy üzenetet jelenít meg a pár sor, adjunk hozzá egy átmeneti jellegű üzenetet egy új sorban (az ASCII-kód 13) a Chr függvény (például látható. 11.2).

MsgBox „Ez az első sorban.” Chr (13) „Ez a második sorban."

Akkor szét a szöveges üzenetek és a multi-oszlopok segítségével tab karaktert (ASCII-kód egyenlő 9).

Amellett, hogy az üzeneteket az üzenet ablakban lehet jelen, számos standard ikonok, valamint többféle szokásos gombok. Mindez adott megadásával számérték az opcionális argumentum egy gomb.

A piktogram az üzenet fog nézni egy kicsit „hűvösebb”, mint a szerény ablak látható. 11.2. Amint ábrán látható. 11.3 Az üzenet dobozban sürgősségi ikonra (ez az ikon általában nem okoz a felhasználó valamilyen izgalom).

Ábra. 113. Nem egyszerű üzenet mezőbe

Alapértelmezésben az üzenet mezőbe csak rendben van, de akkor adjunk hozzá egy feliratú gomb Mégse vele, igen, nem, stop, Skip és Replay különböző kombinációkban. Ábra. 11.3 csak azt mutatja, az ablak az egyik ilyen gomb kombinációkat.

Mint sok ilyen érvek más funkciót, az érték a gomb érv összegeként kiszámított állandók képviselő készlet gombok és ikonok. Lehet számítani a helyes értéket kézzel, de jobb, hogy hozzon létre egy megfelelő kifejezése a VBA-konstansok kínálnak csak erre a célra. Táblázat. 11,6 Ezek az állandók szerepel együtt a számértékek és leírások a célra.

Táblázat 11.6. VBA állandók üzenet dobozok és beviteli mezők

Segítségével ez a táblázat könnyen kiszámítható, hogy a funkció meghívásakor az üzenet ablak jelenik meg, amint az ábra. 11.3, a gombok argumentumértékkel volt egyenlő 531. De ki akar tekinteni az értéke? Könnyebb írja be a következő nyilatkozatot teszi:

INTA = MsgBox ( "Click", vbYesNoCancel + vbCritical

+ vbDefault Button3 "VBA kezdőknek")

A harmadik a konstansok a kifejezésben az érvvel gombok, vbDefaultButton3 állandó jelöli ki a harmadik gomb (balról jobbra) gombot az alapértelmezett beállítás. Ebben az esetben kattintson a Mégse gombra. Ha alaposan gondolja ábra. 11,3, akkor láthatjuk, hogy a Mégse gombot kell fordítani - a felirat azt felvázolt egy pontozott keret, és ez azt jelenti, hogy az adott gomb aktív, amikor megnyomja a szóköz vagy .

Hogy mit jelent a kijelző gombok üzenet doboz, hogy a felhasználó számára, hogy válasszon egy műveletet. Ebben az esetben a felhasználónak nem kell nyomtatni semmit - csak kattints az egyik gombot. És akkor képesnek kell lennie, hogy megtudja, mi gombra kattintott a felhasználó.

Ez egyszerűen azért, mert a MsgBox függvény egy egész értéket, amely pontosan megfelel a gombot, ha a felhasználó rákattint. Annak érdekében, hogy ne terheljék a memóriát, össze lehet hasonlítani a visszatérési érték nem a konkrét számokat, de a javasolt VBA konstansok. Ezek az állandók, valamint azok tényleges értékek.

Ha csak két gomb, hogy megtudja, melyik a gombok egy kattintással, tökéletes, ha az üzemeltető egy üzenet doboz. Aztán. Például:

Ha MsgBox ( "Start?", VbYesNo) = vbYes Ekkor

Ha több kulcsot kell használnia Ha az üzemeltető. Aztán. Else if.

Alapértelmezésben az üzenet mezőben jelenik meg a neve a címsorban a VBA alkalmazást, amelyből a program végrehajtása (lásd. Ábra. 11.2). Ez a fejléc lehet változtatni, hogy más megadásával a megfelelő értéket az érvelés az üzemeltető header MsgBox függvény hívás (lásd. Ábra. 11,3).

Kapcsolódó cikkek