VBA DATEADD fonksiyonu, Tarih ve Saat işlevleri kategorisi altında listelenen bir zaman zekası işlevidir. İşlev, tarihi girer ve verilen tarihten gün, ay ve yıl ekler veya çıkarır.
Bu nedenle, VBA DATEADD işlevi çıktı olarak tarihi döndürecektir. Bir tarihe gün, ay ve yıl ekleyebilir veya çıkarabilir ve karşılığında yeni tarihi alabiliriz. Örneğin, "15-Oca-2023" tarihimiz olduğunu ve on gün eklemek istediğimizi varsayalım. Aşağıdaki kodu kullanabiliriz.
Sub DateAdd_Intro()
Dim Mydate As Date
Mydate = “15-Oca-2023”
Mydate = DateAdd(“d”, 10, Mydate)
MsgBox Mydate
End Sub
Kodu çalıştırdığımızda, bir mesaj kutusu karşılığında yeni tarihi, yani "25-Ocak-2023" bilgisini alacağız.

- VBA DateAdd fonksiyonu belirtilen tarihe belirtilen günleri, ayları, yılları, çeyrekleri veya haftaları ekler veya çıkarır.
- “d” günleri, “m” ayları ve “yyyy” yılları temsil etmektedir.
- “ww”, sayı 1 ise verilen tarihe 7 gün ekler; benzer şekilde, sayı 2 ise verilen tarihe 14 gün ekler.
- “q” verilen tarihe üç ay ekler.
- Tarihi çıkarmak için sayıyı negatif olarak vermemiz gerekir.
VBA DateAdd Fonksiyonunun Sözdizimi
Aşağıda VBA DateAdd fonksiyonunun sözdizimi yer almaktadır.
DateAdd( Interval As String, Number as Double, Date)
- Range: Bu argümanda ne yapılması gerektiğine, yani gün, ay veya yıl eklenmesi veya çıkarılması gerekip gerekmediğine karar vereceğiz.
İhtiyaca bağlı olarak VBA DateAdd fonksiyonunun interval argümanına aşağıdaki girdileri sağlayabiliriz.
| Aralık | Fark Birimi |
|---|---|
| D | Gün Ekle veya Çıkar |
| M | Ay Ekle veya Çıkar |
| Q | Çeyrek Ekle veya Çıkar |
| yyyyyy | Yılları Ekle veya Çıkar |
| w | Hafta Gününü Ekle veya Çıkar |
| ve | Yılın Gününü Ekle veya Çıkar |
| www | Yılın Haftalarını Ekle veya Çıkar |
| H | Saat Ekle veya Çıkar |
| N | Dakika Ekle veya Çıkar |
| S | İkinciyi Ekle veya Çıkar |
- Sayı: [Number] Burada, ilk argümanda girilen aralığa göre sayıyı verebiliriz. Toplama için pozitif sayılar ve çıkarma için negatif sayılar sağlayabiliriz.
- Tarih:[Date] Gün, ay veya yıl eklemeye veya çıkarmaya çalıştığımız gerçek tarih.
VBA'da DateAdd Fonksiyonu Nasıl Kullanılır?
VBA DATEADD işlevini adım adım bir yaklaşımla kullanmanın basit bir örneğini gösterelim. "20-05-2023" tarihimiz olduğunu varsayalım. Tarihe 2 gün eklemeliyiz.
Adım 1: Makroya isim vererek alt prosedürü başlatın.

Adım 2: Orijinal tarih değerini depolamak için Tarih veri türü olan “20-05-2023” ile bir değişken tanımlayın.

Adım 3: Tanımlı değişkene “20-05-2023″ tarihini atayın.

Adım 4: VBA DateAdd fonksiyonu tarafından döndürülecek yeni tarihi depolamak için Date veri türünde başka bir değişken tanımlayın.

Adım 5: Bu yeni değişken için VBA DateAdd fonksiyonu aracılığıyla değeri atayacağız. Bu nedenle, değişken adını girin ve VBA DateAdd fonksiyonunu açın.

Adım 6: Fonksiyonun ilk argümanı “Interval”dır. Burada tarihe iki gün eklemeye çalışıyoruz. Bu nedenle interval argümanını “d” olarak girin.

Adım 7: Tarihe iki gün eklememiz gerektiğinden, VBA DateAdd fonksiyonunun sayı argümanına iki giriyoruz.

Adım 8: Sonra, başka bir gün eklemeye veya çıkarmaya çalıştığımız tarihi girmeliyiz. Bu durumda, tarihimiz 20-05-2023'tür ve "Original_Date" değişkenine atanmıştır. Bu nedenle, bu değişkene bir ad verin.

Adım 9: Braketi kapatın.

Adım 10: Son olarak yeni Tarih değerini bir mesaj kutusunda gösterin.
Alt DateAddd_Basic()
Dim Orijinal_Tarih Tarih Olarak Orijinal_Tarih
= “20-05-2023”
Dim Yeni_Tarih Tarih Olarak
Yeni_Tarih = DateAdd(“d”, 2, Orijinal_Tarih)
MsgBox Yeni_Tarih
Alt Son
Kodu çalıştıralım ve karşılığında in-date bilgisini alalım.

Başlangıçtaki tarihimiz “20-05-2023” idi ve buna iki gün ekledik; dolayısıyla yeni tarihimiz 22-05-2023, yani orijinal tarihten iki gün sonrası oldu.
VBA DateAdd Fonksiyonunun Örnekleri
Size çeşitli VBA DateAdd fonksiyonu pratik örneklerini gösterelim.
Örnek 1: Tarih Ekle
Karşılığında yeni bir tarih elde etmek için tarihe belirli sayıda gün ekleyebiliriz. "14-03-2023" tarihini ele alalım ve ona on gün ekleyelim.
Aşağıdaki kod on gün ekleyecek ve yeni tarihi döndürecektir.

Kod Açıklaması:
Bölüm 1: Burada, bir “MyDate” değişkeni tanımladık ve ona “15-03-2023” tarihini atadık. Bundan sonra, bu değişkene başvurduğumuzda, “15-03-2023” verisini tutar.
Bölüm 2: “New_Date” adında başka bir değişken tanımladık. VBA DateAdd fonksiyonu aracılığıyla buna bir değer atıyoruz. Tarihe on gün eklemek için “d” aralığını kullandık.
Bölüm 3: Son olarak VBA DateAdd fonksiyonu tarafından döndürülen yeni tarih değerini mesaj kutusunda gösteriyoruz. Bu kodu çalıştıralım ve mesaj kutusunda aşağıdaki yeni tarihi göreceğiz.
Başlangıçtaki tarih 15 Mart 2023'tü; on gün eklediğimizden dolayı yeni tarih, yani 25 Mart 2023'e ulaşıyoruz.

Örnek 2: Ayları Ekle
Önceki örnekteki gibi aynı tarih için beş ay ekleyeceğiz. Ay eklemek için VBA DateAdd fonksiyonunun interval argümanını değiştirmemiz gerekir.
Önceki örnekteki aynı kodu kullanalım ve sadece aralık argümanını “d”den “m”ye ve sayıyı 10’dan 5’e değiştirelim.
Sub DateAdd_Ex2()
‘Define a variable to assign a date value
Dim Mydate As Date
‘Assing a date to the defined variable
Mydate = “15-03-2023”
‘Define variable to assign new date
Dim New_Date As Date
‘Assign the new date returned by the DateAdd function
New_Date = DateAdd(“m”, 5, Mydate)
‘Show the new date in a message box
MsgBox New_Date
End Sub
Kodu çalıştıralım ve yeni tarihi bir mesaj kutusuyla geri alalım.

Orijinal tarih “15-03-2023” idi. Tarihe 5 ay eklediğimiz için sadece ay 3’ten 8’e değişti, yani 3+5 = 8.
Örnek 3: Yılları Ekle
Benzer şekilde, aynı tarih için birçok yıl ekleyebiliriz. Örneğin, şu anda tarihin yıl kısmı 2023'tür. İki yıl eklersek 2025 olur, tarihin diğer tüm kısımları aynı kalır.
Sub DateAdd_Ex3()
'Tarih değerini atamak için bir değişken tanımla
Dim Mydate As Date
'Tanımlı değişkene bir tarih ata
Mydate = “15-03-2023”
'Yeni tarih atamak için değişken tanımla
Dim New_Date As Date
'DateAdd fonksiyonu tarafından döndürülen yeni tarihi ata
New_Date = DateAdd(“yyyy”, 2, Mydate)
'Yeni tarihi bir mesaj kutusunda göster
MsgBox New_Date
End Sub
Aralık argüman değerini “yyyy” olarak ve sayıyı 2 olarak değiştirdik. Verilen tarihin yıl kısmına iki yıl ekleyecek ve 15 Mart 2025 olacak.

Örnek 4: Çeyrek Ekle
Çeyrek, geçerli tarihe üç ay ekleyecektir. Örneğin, geçerli tarih 15 Mart 2023 ise ve bir çeyrek eklersek, yeni tarihi 15 Haziran 2023 olarak elde ederiz. Örneğin , aşağıdaki VBA koduna bakın .
Sub DateAdd_Ex4()
'Tarih değerini atamak için bir değişken tanımla
Dim Mydate As Date
'Tanımlı değişkene bir tarih ata
Mydate = “15-03-2023”
'Yeni tarih atamak için değişken tanımla
Dim New_Date As Date
'DateAdd fonksiyonu tarafından döndürülen yeni tarihi ata
New_Date = DateAdd(“q”, 1, Mydate)
'Yeni tarihi bir mesaj kutusunda göster
MsgBox New_Date
End Sub
Aralığı “q” olarak ve sayıyı 1 olarak değiştirdik. Verilen tarihe üç ay ekler; sadece ay kısmı değişecek, geri kalanı aynı kalacaktır.
Şimdi heyecan verici senaryoya bakalım. Örneğin, tarihin 15 Kasım 2023 olduğunu varsayalım ve buna bir çeyrek eklersek, takip eden yılın tarihini, yani 2024 yılını elde ederiz. Aşağıdaki koda bakın.
Sub DateAdd_Ex4()
'Tarih değerini atamak için bir değişken tanımla
Dim Mydate As Date
'Tanımlı değişkene bir tarih ata
Mydate = “15-11-2023”
'Yeni tarih atamak için değişken tanımla
Dim New_Date As Date
'DateAdd fonksiyonu tarafından döndürülen yeni tarihi ata
New_Date = DateAdd(“q”, 1, Mydate)
'Yeni tarihi bir mesaj kutusunda göster
MsgBox New_Date
End Sub
Bu kodu çalıştırdığımızda aşağıdaki yeni tarihi elde ederiz.

Mevcut tarih olan 15 Kasım 2023'e üç ay eklenecek ve yeni tarih bir sonraki yıla taşınacak.
Örnek 5: Hafta İçi Günleri Ekleyin
Tarihe birçok gün eklemek gibidir. Hafta içi dediği için, sonucun hafta sonlarını, yani Cumartesi ve Pazar'ı hariç tutmasını bekleyebilirsiniz. Ancak, VBA DateAdd fonksiyonunun interval argümanına "w" geçirdiğimizde, belirtilen tarihe yalnızca belirtilen gün sayısını ekler.
Sub DateAdd_Ex5()
'Tarih değerini atamak için bir değişken tanımla
Dim Mydate As Date
'Tanımlı değişkene bir tarih ata
Mydate = “21-07-2023”
'Yeni tarih atamak için değişken tanımla
Dim New_Date As Date
'DateAdd fonksiyonu tarafından döndürülen yeni tarihi ata
New_Date = DateAdd(“w”, 1, Mydate)
'Yeni tarihi bir mesaj kutusunda göster
MsgBox New_Date
End Sub
Aşağıdaki tarihi döndürecektir.

Örnek 6: Hafta Ekle
Temel olarak, "ww" verilen tarihe yedi gün ekleyecektir. Bu durumda, geçerli tarih 15 Temmuz 2023'tür ve bir hafta eklediğimiz için, verilen tarihe yedi gün ekleyecek ve 28 Temmuz 2023'te yeni tarih olarak geri dönecektir.
Sub DateAdd_Ex6()
'Tarih değerini atamak için bir değişken tanımla
Dim Mydate As Date
'Tanımlı değişkene bir tarih ata
Mydate = “21-07-2023”
'Yeni tarih atamak için değişken tanımla
Dim New_Date As Date
'DateAdd fonksiyonu tarafından döndürülen yeni tarihi ata
New_Date = DateAdd(“ww”, 1, Mydate)
'Yeni tarihi bir mesaj kutusunda göster
MsgBox New_Date
End Sub

Örnek 7: Saat Ekle
VBA DateAdd fonksiyonu yalnızca tarihlerle değil, zamanla da çalışır. Tarih/saat değerinin zaman kısmına saat, dakika ve saniye ekleyebiliriz. Örneğin, “21-07-2023 14:15:00 PM” tarih/saat değerine sahipsek ve bir saat eklemek istiyorsak, aşağıdaki kodu kullanırız.
Sub DateAdd_Ex7()
'Tarih değerini atamak için bir değişken tanımla
Dim Mydate As Date
'Tanımlı değişkene bir tarih ata
Mydate = “21-07-2023 14:15:00 PM”
'Yeni tarih atamak için değişken tanımla
Dim New_Date As Date
'DateAdd fonksiyonu tarafından döndürülen yeni tarihi ata
New_Date = DateAdd(“h”, 1, Mydate)
'Yeni tarihi bir mesaj kutusunda göster
MsgBox New_Date
End Sub
Bu kodu çalıştırdığımızda aşağıdaki yeni zamanı elde edeceğiz.

Örnek 8: Tarihi Çıkar
VBA DateAdd fonksiyonu yalnızca toplamayı değil aynı zamanda tarihlerin çıkarılmasını da destekler. Tek yapmamız gereken ona negatif sayılar vermektir.
Örneğin 21 Temmuz 2023 tarihimiz varsa, sayıyı "d" aralığıyla -1 olarak verirsek yeni tarihi 20 Temmuz 2023 olarak elde ederiz. Örneğin aşağıdaki koda bakalım.
Sub DateAdd_Ex8()
'Tarih değerini atamak için bir değişken tanımla
Dim Mydate As Date
'Tanımlı değişkene bir tarih ata
Mydate = “21-07-2023”
'Yeni tarih atamak için değişken tanımla
Dim New_Date As Date
'DateAdd fonksiyonu tarafından döndürülen yeni tarihi ata
New_Date = DateAdd(“d”, -1, Mydate)
'Yeni tarihi bir mesaj kutusunda göster
MsgBox New_Date
End Sub
Bu kodu çalıştırdığımızda aşağıdaki yeni tarihi elde edeceğiz.

Dikkat Edilmesi Gereken Önemli Noktalar
- VBA DateAdd fonksiyonu yalnızca tarih ve saat değerlerini kabul eder; verilen değer bir tarih ve saat değeri değilse Tür Uyuşmazlığı hatası alırız.
- Verilen aralık değeri tanınabilir değilse VBA'da Type Mismatch hatası alırız .
- VBA DateAdd işlevinin çıktı biçimi sistem tarih biçimine bağlıdır. Örneğin, bazı sistemlerde 12-30-2023'ü gösterebilir; diğerlerinde ise 30-12-2023'ü gösterebilir.
- “w” aralığı hafta sonu günlerini hariç tutmaz; aksine “d” aralığı gibi çalışır.
