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