VBA IsDate işlevi, bir ifadenin geçerli bir tarih olup olmadığını belirlemek için kullanılabilir. İfadenin meşru bir tarihe dönüştürülüp dönüştürülemeyeceğine bağlı olarak bir Boole değeri (True veya False) döndürür. Bu özellik, özellikle kullanıcı girişi veya veri içe aktarımlarıyla çalışırken yararlı olan, tarih değerlerinin işlenmeden önce doğru şekilde biçimlendirildiğinden emin olmaya yardımcı olur. Bir örneğe bakalım. CheckDateValidity adlı bir VBA alt rutinimiz var. Kullanıcı tarafından girilen bir tarihin geçerli olarak yorumlanıp yorumlanamayacağını belirlemek için kullanılır.

Kod çalıştığında, kullanıcıya bir tarih girmesini isteyen bir giriş kutusu görüntülenir ve bu tarih daha sonra userInput değişkenine kaydedilir. Kod daha sonra userInput'a girilen değerin geçerli bir tarih olup olmadığını belirlemek için VBA IsDate işlevini kullanır.

Bu amaçla tasarlanmış VBA IsDate fonksiyonu, girdi geçerli bir tarih olarak tanınıyorsa True, tanınmıyorsa False değerini döndürür.
Son olarak, değerlendirmenin sonucu kullanıcıya bir mesaj kutusunda gösterilerek anında geri bildirim sağlanır. Excel VBA'da tarih girdilerinin hızlı bir şekilde doğrulanmasını kolaylaştırmak için, girdi geçerli bir tarihse mesaj kutusu "True" ve değilse "False" görüntüler.

- VBA IsDate fonksiyonu, standart sistem tarih biçimini bir kılavuz olarak kullanarak bir ifadenin geçerli bir tarih sağlayıp sağlamadığını belirler.
- VBA IsDate fonksiyonu, ifade geçerli bir tarih ise True değerini, değilse False değerini döndürür.
- VBA IsDate fonksiyonunu kullanırken sistemin varsayılan tarih biçimini, bölgesel ayarları ve ifadedeki tarih ve saat bileşenlerinin olasılığını göz önünde bulundurun.
- Basit biçim kontrollerinin ötesinde, tarihlerin mantıksal doğruluğunu garanti altına almak için daha fazla doğrulama gerekebilir.
Sözdizimi
IsDate fonksiyonunun sözdizimi şöyledir:
IsDate(İfade)
İfade: Bu, meşru bir tarih olarak doğrulamak istediğiniz değer veya ifadedir. İşlevin gerekli olan tek bileşenidir. Bir hücre başvurusu, bir değişken veya bir sabit ifade olarak kullanılabilir.
Daha basit bir ifadeyle:
- IsDate: Fonksiyonun adı.
- İfade: Geçerli bir tarih olup olmadığını kontrol etmek istediğiniz değer veya veri.
İfade, ifadenin geçerli bir tarih olarak anlaşılabilmesi durumunda “True”, aksi takdirde “False” değerini döndüren VBA IsDate fonksiyonu tarafından değerlendirilir.
VBA IsDate Fonksiyonu Nasıl Kullanılır?
VBA'da IsDate işlevini kullanmak basittir. İzlenecek adımlar şunlardır:
Adım 1: Excel'i açın ve VBA düzenleyicisini açmak için ALT + F11 tuşlarına basın.

Adım 2: Menüde “Ekle”ye tıklayıp “Modül”ü seçerek yeni bir modül ekleyin.

Adım 3: Yeni modülde bir alt rutin oluşturun ve kullanacağınız tüm değişkenleri bildirin. VBA IsDate işlevi durumunda, genellikle kullanıcı girdisini veya tarih olarak kontrol etmek istediğiniz değeri depolamak için bir değişken bildirirsiniz.
Örneğin:
Dim userInput'u Dize Olarak
Adım 4: Tanımladığınız değişkene bir değer atayın. Bu değer genellikle kullanıcı girdisinden veya bazı veri kaynaklarından elde edilir.
İşte VBA'da kullanıcıdan girdi almak için bir giriş kutusu kullanma örneği:
userInput = InputBox(“Bir tarih girin:”)
Adım 5: Değişkeninizdeki değerin geçerli bir tarih olup olmadığını kontrol etmek için VBA IsDate fonksiyonunu kullanın.
Örneğin:
If IsDate(userInput) Then
Adım 6: If ifadesinin içine, değerin geçerli bir tarih olması durumunda (True koşulu) ve olmaması durumunda (False koşulu) ne olacağını kodlayabilirsiniz.
Örneğin;
MsgBox userInput & ” is a valid date.”
Else
MsgBox userInput & ” is not a valid date.”
End If
Adım 7: Çalışma kitabınızı kaydedin ve VBA düzenleyicisini kapatın. Kodu F5'e basarak veya "Çalıştır"a tıklayarak çalıştırabilirsiniz.
Örnekler
Örnek 1 – Temel Tarih Doğrulaması
Bu örnekte, “12/31/2023” dizesinin geçerli bir tarih olup olmadığını kontrol ediyoruz; öyle ve böylece “12/31/2023 geçerli bir tarihtir” mesajı görüntülenecektir.
Adım 1: Yeni modülde ilk olarak BasicDateValidation adında bir VBA alt rutini tanımlıyoruz.

Adım 2: Sonra, dateValue adlı bir değişkeni VBA String veri türü olarak bildiriyoruz. Bu değişken, kontrol etmek istediğimiz tarihi depolayacaktır. Bu durumda, dateValue'ye "12/31/2023" değerini atıyoruz.

Adım 3: Bu satır bir If ifadesi başlatır. IsDate(dateValue) ifadesinin True olarak değerlendirilip değerlendirilmediğini kontrol eder. IsDate, dateValue içindeki değerin geçerli bir tarih olup olmadığını kontrol eden bir fonksiyondur.

Adım 4: If ifadesindeki koşul True ise (yani, dateValue geçerli bir tarihse), bu kod bloğu yürütülür. dateValue'nin geçerli bir tarih olduğunu belirten mesajın bulunduğu bir mesaj kutusu görüntüler.

Adım 5: If ifadesinin koşulu False ise bu kod bloğu yürütülür, yani dateValue geçersiz bir tarihtir. DateValue geçerli bir tarih değildir, görüntülenen mesaj kutusu tarafından belirtilir.

Adım 6: Şimdi, VBA makrosunu kaydedin ve çalıştır'a tıklayın. Bu kod yürütüldüğünde, "12/31/2023" dizesinin geçerli bir tarih olup olmadığını belirler ve bu bilgiyle bir mesaj kutusu gösterir.

İşte kodun tamamı:
Sub BasicDateValidation()
Dim dateValue As String
dateValue = “12/31/2023”
If IsDate(dateValue) Then
MsgBox dateValue & ” is a valid date.”
Else
MsgBox dateValue & ” is not a valid date.”
End If
End Sub
Örnek 2 – Geçersiz Tarih Kontrolü
Bu örnekte, varsayılan sistem biçiminde geçerli olmayan bir tarihi ("31/21/2023") bilerek kullanıyoruz. IsDate işlevi False değerini döndürecek ve "31/21/2023 geçerli bir tarih değil" mesajı görüntülenecektir.
Adım 1: Verilen bir tarihin (geçersiz formatta) geçerli olup olmadığını kontrol etmek için InvalidDateCheck adında yeni bir alt rutin bildiriyoruz.

Adım 2: Sonra, kontrol edilecek tarihi depolamak için bir değişken olan validDate bildiriyoruz . Bu durumda, default sistem biçiminde geçerli olmayan bir biçimde olan validDate'e "31/21/2023" değerini atıyoruz .

Adım 3: Burada, IsDate(invalidDate) ifadesinin True olup olmadığını kontrol eden bir If ifadesi başlatıyoruz. Bu, invalidDate ifadesinin geçerli bir tarih olarak yorumlanıp yorumlanamayacağını değerlendirir.

Adım 4: If ifadesindeki koşul True ise, bu kod bloğu yürütülür. Bu, geçersizTarih'in geçerli bir tarih olduğunu belirten bir mesaj içeren bir mesaj kutusu görüntüler.

Adım 5: If ifadesindeki koşul False ise, bu kod bloğu yürütülür. Bu, geçersizTarih'in geçerli bir tarih olmadığını belirten mesajın bulunduğu bir mesaj kutusu görüntüler.

Adım 6: Şimdi, bu kodu çalıştırdığınızda, VBA IsDate fonksiyonunun çıktısına dayanarak “31/21/2023” dizesinin geçerli bir tarih olup olmadığı belirlenir ve geçerli olup olmadığını belirten bir mesaj kutusu gösterilir.

İşte tam kod:
Sub InvalidDateCheck()
Dim invalidDate As String
invalidDate = “31/21/2023”
If IsDate(invalidDate) Then
MsgBox invalidDate & ” is a valid date.”
Else
MsgBox invalidDate & ” is not a valid date.”
End If
End Sub
Örnek 3 – Tarih ve Saat
Bu örnekte, “12/31/2023 14:30:00” dizesinin geçerli bir tarih ve saati temsil edip etmediğini kontrol ediyoruz. IsDate işlevi, hem tarih hem de saat bileşenlerini işleyebildiği için True değerini döndürecektir.
Adım 1: İlk olarak “DateWithTimeCheck” adında yeni bir alt rutin tanımlıyoruz.

Adım 2: Sonra, kontrol edilecek tarih ve saati depolamak için bir dateTimeValue değişkeni bildiriyoruz. Bu durumda, dateTimeValue'ya “12/31/2023 14:30:00” değerini atıyoruz.

Adım 3: Bu satır , VBA'da IsDate(dateTimeValue) ifadesinin True olup olmadığını kontrol eden bir If-Else ifadesi başlatır. dateTimeValue'nin geçerli bir tarih ve saat olarak yorumlanıp yorumlanamayacağını kontrol eder.

Adım 4: If ifadesindeki koşul True ise, bu kod bloğu yürütülür. dateTimeValue'nun geçerli bir tarih ve saat olduğunu belirten mesajın bulunduğu bir mesaj kutusu görüntüler.

Adım 5: If ifadesindeki koşul False ise, bu kod bloğu yürütülür. Ancak, geçerli bir tarih ve saat sağladığımız için bu özel durumda buna ulaşılmamalıdır.

Adım 6: Şimdi kodu kaydedip çalıştıralım.
Bu kod çalıştığında, hem tarih hem de saat bileşenlerini içeren “12/31/2023 14:30:00″” dizesinin geçerli bir tarih ve saat olup olmadığını belirler. VBA IsDate işlevinin çıktısına dayanarak, tarih ve saatin geçerli olup olmadığını belirten bir ileti kutusu görüntüler.

İşte tam kod:
Sub DateWithTimeCheck()
Dim dateTimeValue As String
dateTimeValue = “12/31/2023 14:30:00”
If IsDate(dateTimeValue) Then
MsgBox dateTimeValue & ” is a valid date and time.”
Else
MsgBox dateTimeValue & ” is not a valid date and time.”
End If
End Sub
