/ / Porovnat data a časy v aplikaci Excel VBA

Porovnat data a časy v aplikaci Excel VBA

Tento příklad vás naučí porovnejte data a časy v Excel VBA. Termíny a časy jsou uloženy jako čísla v aplikaci Excel a počítat počet dnů od 1. ledna 1900. To, co vidíte, závisí na číselném formátu.

1. Do sloupce A. zadejte některá čísla.

Čísla

2. Tato čísla jsou data. Je to dokonalý způsob, jak zadat data bez obav o datovém formátu. Změňte formát na datum (klepněte pravým tlačítkem myši na záhlaví sloupce, na formát buňky a vyberte datum).

Výsledek:

Termíny

Poznámka: Data jsou ve formátu US. Měsíce první, Dny druhé. Tento typ formátu závisí na nastavení regionálních oken.

Umístěte na pracovní list příkazové tlačítko a přidejte následující řádky kódu:

3. Vyjádřete proměnnou i typu Integer.

Dim i As Integer

4. Přidejte smyčku Next For Next.

For i = 1 To 5

Next i

5. Funkce Date vrátí aktuální datum bez času. Přidejte do smyčky následující řádek, abyste zvýraznili všechny buňky obsahující aktuální datum (12/22/2013).

If Cells(i, 1).Value = Date Then Cells(i, 1).Font.Color = vbRed

Výsledek:

Termíny jsou stejné

6. Do smyčky přidejte následující kódový řádek, abyste označili všechny data dříve než 4.9.2011.

If Cells(i, 1).Value < DateValue("April 19, 2011") Then Cells(i, 1).Font.Color = vbRed

Výsledek:

Termíny starší než

7. Ale co s časem, slyšíme, že říkáte. Jsou desetinná místa. Přepněte zpět na obecný formát a změňte čísla na desetinná čísla.

Desítková čísla

8. Nyní změňte formát na formát "Datum a čas".

Formát data a času

Výsledek:

Termíny a časy

9. Chcete-li zvýraznit všechny buňky, které obsahují aktuální datum, nemůžeme kódový řádek 5 již používat. Proč ne? Protože čísla ve sloupci A jsou nyní desítková čísla. Srovnání s datem (celé číslo) by nedosáhlo žádnou shodu. (To by dalo jen zápas s 12/22/2013 přes půlnoci přesně!) Následující řádka kódu funguje:

If Int(Cells(i, 1).Value) = Date Then Cells(i, 1).Font.Color = vbRed

Vysvětlení: jednoduše používáme funkci Int. Funkce Int zaokrouhluje číslo na nejbližší celé číslo. Tímto způsobem můžeme data bez časů a porovnat s datem.

Výsledek:

Termíny bez časů stejné

10. Přidejte následující řádek, abyste zvýraznili všechny buňky, které obsahují čas ráno.

If (Cells(i, 1).Value - Int(Cells(i, 1).Value)) < 0.5 Then Cells(i, 1).Font.Color = vbRed

Vysvětlení: stačí jen desetinná místa, takže odečteme celočíselnou část. Poledne (v polovině dne) je reprezentováno jako 0,5. Desetinná místa nižší než 0,5 jsou ráno.

Výsledek:

Doba ráno

Také si přečtěte: