Porovnání dat ve VBA

click fraud protection
stránka kalendáře

VBA ukládá datum jako počet dní od 30. prosince 1899.

Kredit obrázku: Sergii Gnatiuk/iStock/Getty Images

Porovnání dat v aplikaci Microsoft Visual Basic for Applications se neliší od porovnávání jakéhokoli jiného datového typu. Porovnávané hodnoty musí být typu „Datum“. Můžete použít standardní porovnávací operátory: "" pro "větší než"; ">=" pro "větší než nebo rovno"; "=" pro "rovná se"; a "<>" pro "není rovno." Můžete také použít dva operátory porovnání, "Je" a "Není."

Typ data VBA

Je užitečné si zapamatovat, jak VBA ukládá hodnoty data do paměti, když porovnáváte data. Datum je uloženo jako číslo s pohyblivou řádovou čárkou s dvojnásobnou přesností nebo jako Dvojité. Dlouhá celočíselná část je počet dní, kladných nebo záporných, od 30. prosince 1899. Desetinná část je množství času, které uplynulo od půlnoci. Datum bez času má svou desetinnou část nastavenou na nulu. Například 1. květen 1967 je uložen jako 24593.0. To znamená, že když VBA porovnává dvě data, ve skutečnosti porovnává dvě čísla, která představují dny.

Video dne

Řetězec znaků vs. datum

Když porovnáváte data ve VBA, musíte zajistit, aby porovnávané hodnoty měly typ "Datum" a nebyly to znakové řetězce. Například řetězec znaků "05/01/1999" je menší než řetězec znaků "12/31/1900", protože "05" přichází před „12“. Převeďte řetězec znaků na typ data pomocí funkce „CDate“, například „CDate (Textové pole. Hodnota)".

Užitečné funkce

Kromě CDate() existují další užitečné funkce, které můžete použít při porovnávání dat. Funkce "Date()" poskytuje dnešní datum jako hodnotu Date. Funkce "Now()" poskytuje dnešní datum a čas jako hodnotu Date. Protože datový typ Date obsahuje také časovou komponentu, můžete extrahovat pouze datovou část proměnné při porovnávání dat pomocí funkce „DateValue()“, například „Pokud odeslání > DateValue (termín) ..."

Aritmetika data

Protože datum je uloženo jako počet dní od 30. prosince 1899, můžete při porovnávání dat ve VBA zahrnout aritmetiku data. Pokud například platnost tiketu vyprší tři dny po jeho zakoupení, můžete zkontrolovat platnost tiketu pomocí kódu VBA, který je podobný následujícímu:

Platnost veřejné funkce vypršela (nákup jako datum) As vypršela logická hodnota = False Pokud nákup+3 > Date() Pak vypršela = True End If End Function