VBA'da Tarih Karşılaştırması

takvim sayfası

VBA, 30 Aralık 1899'dan bu yana geçen gün sayısı olarak bir tarih depolar.

Resim Kredisi: Sergii Gnatiuk/iStock/Getty Images

Microsoft Visual Basic for Applications'ta tarihleri ​​karşılaştırmak, diğer veri türlerini karşılaştırmaktan farklı değildir. Karşılaştırdığınız değerler "Date" türünde olmalıdır. Standart karşılaştırma operatörlerini kullanabilirsiniz: ""; ">=" için "büyük veya eşittir"; "eşittir" için "="; ve "eşit değil" için "<>". Ayrıca "Is" ve "IsNot" olmak üzere iki karşılaştırma operatörü de kullanabilirsiniz.

VBA Tarih Türü

Tarihleri ​​karşılaştırırken VBA'nın tarih değerlerini bellekte nasıl sakladığını hatırlamak yararlıdır. Bir tarih, çift duyarlıklı kayan noktalı sayı veya Double olarak saklanır. Uzun tamsayı kısmı, 30 Aralık 1899'dan bu yana pozitif veya negatif günlerin sayısıdır. Ondalık kısım, gece yarısından bu yana geçen süredir. Saati olmayan bir tarihin ondalık kısmı sıfıra ayarlanmıştır. Örneğin 1 Mayıs 1967, 24593.0 olarak depolanır. Bu, VBA iki tarihi karşılaştırdığında, aslında günleri temsil eden iki sayıyı karşılaştırdığı anlamına gelir.

Günün Videosu

Karakter Dizisi Vs. Tarih

VBA'da tarihleri ​​karşılaştırırken, karşılaştırdığınız değerlerin "Tarih" türünde olduğundan ve karakter dizeleri olmadığından emin olmalısınız. Örneğin, "05/01/1999" karakter dizesi "12/31/1900" karakter dizesinden daha küçüktür çünkü "05" "12"den önce gelir. "CDate" işlevini kullanarak bir karakter dizesini bir tarih türüne dönüştürün, örneğin, "CDate (Metin kutusu. Değer)".

Faydalı Fonksiyonlar

CDate() işlevine ek olarak, tarihleri ​​karşılaştırırken kullanabileceğiniz başka yararlı işlevler de vardır. "Date()" işlevi, bugünün tarihini Tarih değeri olarak sağlar. "Now()" işlevi, Tarih değeri olarak bugünün tarih ve saatini sağlar. Date veri türü ayrıca bir saat bileşeni içerdiğinden, bir değişkenin yalnızca tarih bölümünü çıkarabilirsiniz. "DateValue()" işlevini kullanarak tarihleri ​​karşılaştırırken, örneğin, "Eğer gönderim > DateValue (son tarih) Sonra ..."

Tarih Aritmetiği

Bir tarih, 30 Aralık 1899'dan bu yana geçen gün sayısı olarak depolandığından, VBA'da tarihleri ​​karşılaştırırken tarih aritmetiği ekleyebilirsiniz. Örneğin, bir biletin süresi satın alındıktan üç gün sonra dolarsa, aşağıdakine benzer VBA koduyla süresi dolmuş bir bileti kontrol edebilirsiniz:

Genel İşlevin süresi doldu (Tarih olarak satın alın) Boolean süresi dolduğunda = False Eğer satın alma+3 ise > Date() Sonra süresi doldu = Bitişse True End Function