VBA'daki Tarih Biçimi, Excel'de tarihleri biçimlendirmek için kullanılan yerleşik bir işlevdir. Excel, verilerle çalışmak üzere tasarlanmıştır ve veriler içinde çok sayıda tarih bulunur. Verileri her zaman hazır biçimde alamayız. Bazen, verileri kullanıcıya hazır olacak şekilde biçimlendirmemiz gerekir ve bu tür bir şey de tarihleri kullanıcı hazırlığına uyacak şekilde biçimlendirmektir.
VBA, görevleri otomatikleştirmemize olanak tanır ve otomasyonun bir parçası olarak tarih biçimlendirmesi de farkında olmamız gereken bir görevdir.
Örneğin Excel'deki aşağıdaki verilere bakalım.

Yukarıdaki veriler günlük satışları göstermektedir, ancak sarı renkli hücrelerin tarih formatına baktığımızda tarihler için farklı formatlamalar görüyoruz. Satış özetini şirketin üst yönetimine göndermemiz gerektiğinde tutarsız tarih formatlaması iyi görünmeyecektir.
Bu tutarsız tarih biçimlendirmesini küçük verilerle manuel olarak düzeltebiliriz, ancak büyük veri kümeleriyle bu o kadar kolay olmayacaktır. Tarihleri hızlı bir şekilde biçimlendirmek için VBA veri biçimlendirme tekniklerini kullanabiliriz.
ÖNEMLİ NOKTALAR
- VBA Format Date, Excel'de tarihi biçimlendirmek için kullanılır.
- VBA'da tarih biçimlendirmesini Sayı Biçimlendirme metodunu ve FORMAT fonksiyonunu kullanarak değiştirebiliriz.
- Sayı Biçimlendirme ve FORMAT fonksiyonları, diğer sayısal değerlerin biçimlendirmesini değiştirmek için de kullanılır ve yalnızca tarihle sınırlı değildir.
- Tarihi gg-aa-yyyy, aa-gg-yyyy veya yyyy-aa-gg gibi istediğimiz sırayla biçimlendirebiliriz.
- Özel biçimlendirme kodlarını kullanarak ay adını ve gün adını gösterebiliriz.
VBA Tarih Biçiminin Sözdizimi
Tarihi biçimlendirmek için VBA'da FORMAT işlevini kullanabiliriz . Aşağıdaki görüntü, Excel'deki VBA FORMAT işlevinin sözdizimini gösterir.

İfade: Bu zorunlu bir argümandır. Bu argümanda biçimlendirmek istediğimiz tarihi belirtmemiz gerekir. Giriş, doğrudan bir tarih girişi olabilir veya bir değişken biçiminde olabilir veya Excel hücre referansı biçiminde de olabilir.
[Biçim]: Bu argümanda, VAB Biçim fonksiyonunun ilk argümanında verilen tarihe uygulamak istediğimiz tarih biçimlendirmesinin türünü belirtebiliriz.
Önceden Tanımlanmış Tarih Biçimleri
Bu argümanda, aşağıdaki önceden tanımlanmış tarih formatlarından bazılarını verebiliriz.
Genel Tarih
Kısa Tarih
Orta Tarih
Uzun Tarih
Bu önceden tanımlanmış tarih formatlarının dışında aşağıdaki gibi özel tarih formatları da verebiliriz.
| Biçim Kodu | Örnek Ekran | Tanım |
|---|---|---|
| D | 8 | Bu, yalnızca verilen tarihin gününü, öndeki sıfırlar olmadan görüntüler |
| gün | 08 | Bu, yalnızca verilen tarihin gününü öndeki sıfırlarla birlikte görüntüler |
| dddd | Çarşamba | Bu, günün kısa adıyla günü gösterecektir |
| ggggg | Çarşamba | Bu, günün uzun adıyla günü gösterecektir |
| M | 8 | Bu, yalnızca verilen tarihin ayını öndeki sıfırlar olmadan görüntüler |
| mm | 08 | Bu, yalnızca verilen tarihin ayını öndeki sıfırlarla birlikte görüntüler |
| hımmm | Ağustos | Bu, ayın kısa adıyla ayı gösterecektir |
| hımmm | Ağustos | Bu, ayın uzun adıyla ayı gösterecektir |
| yy | 23 | Bu, tarihin yılını 2 haneli olarak gösterecektir |
| yyyyyy | 2023 | Bu, tarihin yılını 4 haneli olarak gösterecektir |
Verilen hücre adresinde istenilen tarih biçimini elde etmek için çeşitli biçimlendirme kodlarının kombinasyonlarını kullanabiliriz. Bu makalede tüm bunları tartışacağız.
VBA'da Tarih Formatı Nasıl Değiştirilir?
Excel'de VBA kullanarak tarih biçimini değiştirmenin birkaç yolu vardır. Karmaşık sorunları çözmeden önce birkaç basit örneğe bakacağız.
Örnek 1 – VBA'da NumberFormat metodunu kullanarak Tarih Biçimini Değiştirme
Excel'deki tarih biçimini değiştirmek için VBA'daki NumberFormat yöntemini kullanabiliriz. Örneğin, bir Excel elektronik tablosunda bulunan aşağıdaki verilere bakın.

3 tarihimiz var ve üç tarihin de tutarsız tarih formatı var. Bu hücreler için tekdüze tarihi hızlıca düzeltmek için ALT + F11 kısayol tuşuna basarak Visual Basic düzenleyici penceresine gidelim.
ALT + F11 kısayol tuşuna bastıktan sonra karşımıza aşağıdaki Visual Basic Editör penceresi açılacak.

Excel makrosuna aşağıdaki gibi bir isim vererek alt programı başlatın .

Adım 1: Öncelikle A2 hücresi için tarih biçimlendirmesini uygulamamız gerekiyor. Hücreye başvurmak için, aşağıdaki gibi VBA RANGE nesne başvurusunu girin.

Adım 2: A2 hücre referansını aşağıdaki gibi çift tırnak içine alın.

Hücre referansı verildikten sonra, RANGE nesnesiyle ilişkili tüm özellikleri ve yöntemleri görmek için noktayı girin.

Adım 3: NumberFormat özelliğini seçin .

Adım 4: NumberFormat'ı seçtikten sonra , verilen hücre adresinin sayı biçimini ayarlamak için eşittir işaretini girin.

Adım 5: Eşittir işareti girildikten sonra, çift tırnak işareti içinde istenen tarih biçimini girin. Örneğin, tarihi gün, ay ve yıl biçiminde göstermek istiyorsak, biçim kodunu aşağıdaki gibi çift tırnak işareti içine girin.
“gg-aa-yyyy”

F5 yürütme kısayol tuşuna basarak kodu çalıştıralım .

Tarih biçimi, daha önce ayın kısa adını görebildiğimiz verilen tarih biçimine değişti ancak şimdi ayı sayılarla görebiliyoruz. Yukarıdaki görüntüde eski tarih biçimi ile yeni tarih biçimi arasındaki farkı görebiliriz.
Örnek 2
Önceki örnekten devam edecek olursak, eğer kalan tüm hücrelere aynı biçimlendirmeyi uygulamak gerekirse, her satır için ayrı ayrı VBA kodu yazamayız .
Tüm hücreler arasında dinamik bir döngü oluşturmak ve tek bir kod satırıyla biçimlendirmeyi uygulamak için döngüleri kullanmamız gerekiyor.
Aşağıdaki kod tüm hücreler için tutarlı tarih formatını uygulayacaktır.
Sub Date_Formatting_Ex2()
Dim k As Integer
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
For k = 2 To LR
Range(“A” & k).NumberFormat = “dd-mm-yyyy”
Next k
End Sub
Yukarıdaki kodu Visual Basic editör penceresine kopyalayın.

Visual Basic düzenleyici penceresinde yeşil yürüt butonuna basın.

Yukarıdaki kodu çalıştırdığımızda tüm hücreler için tutarlı bir tarih formatı uygulanacaktır.

Artık tüm hücreler aynı tarih formatına sahip.
FORMAT Fonksiyonunu Kullanarak Tarih Formatını Değiştirin
Önceki örneklerde RANGE nesnesinin Number Format özelliğini kullanarak tarih biçiminin değiştirildiğini gördük.
Şimdi VBA FORMAT fonksiyonunu kullanarak tarih formatını değiştirmenin yollarına bakalım.
Örnek 1 – Biçim İşlevini Kullanarak Tarih biçimini değiştirin
Daha önce tartıştığımız gibi Genel Tarih, Kısa Tarih, Uzun Tarih ve Orta Tarih gibi birkaç yerleşik tarih biçimimiz var .
Bu yerleşik biçimlendirmeleri FORMAT fonksiyonunu kullanarak uygulayalım.
Excel'deki aşağıdaki tarih değerine bakın.

Adım 1: Makroya isim vererek alt rutini başlatın.

Adım 2: A2 hücresinin değerini saklayacak bir değişken tanımlayın.

Tarih değerini değişkene kaydedeceğimiz için değişkene veri tipini MyDate olarak verdik .
Adım 3: A2 hücresinin değerini MyDate tanımlı değişkenine atayın.

Adım 4: Şimdi format fonksiyonunu kullanarak bu tarihi uzun tarihe biçimlendirmemiz gerekiyor. Değeri aynı hücreye geri depolamamız gerektiğinden RANGE nesnesini kullanın ve değer özelliğine sahip A2 hücre referansını seçin.

Adım 5: Eşittir işaretini girin ve FORMAT fonksiyonunu aşağıdaki gibi girin.

Adım 6: İlk argüman, İfadeyi gerektirir , yani biçimini değiştirmeye çalıştığımız tarih. A2 Hücre değeri, Adım 3'te MyDate değişkenine zaten atanmış. FORMAT işlevinin ifade argümanı için değişken adını girin.

Adım 7: Sonra, formatı çift tırnak içinde Uzun Tarih olarak verin . Son kod aşağıdaki gibi görünür.
Sub DateFormat()
Dim MyDate As Date
MyDate = Range(“A2”).Value
Range(“A2”).Value = Format(MyDate, “Long Date”)
End Sub
Kısayol tuşu F5'e basarak kodu çalıştırdığımızda A2 hücresine uzun tarih formatını alacağız.

Bunu yaparken diğer yerleşik tarih formatlarıyla da oynayabiliriz.
Örnek 2 – VBA'da FORMAT İşleviyle Özel Tarih Biçimlendirme
Çoğu zaman yerleşik tarih biçimlendirmesi yerine özel tarih biçimlendirmesini yapmak durumunda kalabiliriz.
Farklı türde özel tarih biçimlendirmelerini kullanalım ve bunun Excel hücresindeki işleme sonucunu nasıl etkilediğini görelim.
1 – Sadece Gösteri Günü
Sub DateFormat_Day()
Dim MyDate As Date
MyDate = “25-11-2023”
Range(“A2”).Value = Format(MyDate, “dd”)
End Sub
Tarihi hücre referansı üzerinden vermek yerine, tarihi doğrudan değişkene atadık ve yalnızca tarihin gününü gösterecek şekilde “dd” biçimlendirme kodunu uyguladık.
Kodu çalıştırdığımızda A2 hücresine sadece tarihin günü aşağıdaki gibi kaydedilecektir.

Benzer şekilde aşağıdaki kodlar tarihleri çeşitli şekillerde biçimlendirecektir.
2 – Sayılarla Ay Gösterisi
Kod: Range(“A2”).Value = Format(MyDate, “mm”)
Sonuç:

3 – Kısa İsimle Ayı Göster
Kod: Range(“A2”).Value = Format(MyDate, “mmm”)
Sonuç:

4 – Ayın Tam Adıyla Gösterimi
Kod: Range(“A2”).Value = Format(MyDate, “mmmm”)
Sonuç:

5 – Tarihi GG – AA – YYY Formatında Göster
Kod: Range(“A2”).Value = Format(MyDate, “gg-aa-yyyy”)
Sonuç:

#6 – Tarihi MM – DD – YYYY Formatında Göster
Kod: Range(“A2”).Value = Format(MayDate, “gg-aaa-yyyy”)
Sonuç:

7 – Tarihi YYYY – AA – GG Formatında Göster
Kod: Range(“A2”).Value = Format(MyDate, “yyyy-aaa-gg”)
Sonuç:

8 – Yılı Sadece 2 Haneli Olarak Göster
Kod: Range(“A2”).Value = Format(MyDate, “gg-aa-yy “)
Sonuç:

Bunun gibi, VBA'daki FORMAT fonksiyonuyla çeşitli özel tarih biçimlendirmeleri üzerinde oynayabiliriz.
Dikkat Edilmesi Gereken Önemli Noktalar
- VBA'daki FORMAT fonksiyonu sadece tarih formatını değiştirmek için değil aynı zamanda çeşitli sayısal değerlerin formatını değiştirmek için de kullanılır.
- VBA'da FORMAT bir fonksiyondur ve Sayı Biçimlendirmesi bir özelliktir.
- Eğer tarih hücre referansında ise ve metin olarak saklanıyorsa, hangi biçimlendirmeyi uygularsanız uygulayın, verilen tarih için geçerli olmayacaktır.
- FORMAT yalnızca VBA'da bulunan bir fonksiyondur ve bunu çalışma sayfası fonksiyon kategorisinde bulamazsınız.
Örneğin Excel'deki şu tarihe bakalım.
Yukarıdaki tarih için biçimlendirmeyi uygularsak çalışmaz çünkü tarih A2 hücresinde metin olarak saklanır.
Hücredeki değerin gerçekten bir tarih olup olmadığını kontrol etmek için çalışma sayfasındaki ISNUMBER işlevini kullanabiliriz.
B2 hücresinde, A2 hücresindeki değerin sayı olup olmadığını kontrol etmek için ISNUMBER işlevini uyguladık. Formül sonucu FALSE olarak döndürdü, yani A2 hücresindeki değer bir tarih değil, bir metindir. Bu nedenle, VBA biçimlendirme işlevi bu tarihi biçimlendiremez.
Örneğin Excel'deki aşağıdaki tarih sütununa bakın.
Mevcut tarih biçimi yyyy-mm-dd'dir, tüm sütun tarih biçimini dd-mm-yyyy'ye değiştirmek için aşağıdaki kodu kullanabiliriz.
Sub DateFormat_EntireColumn()
Range(“A:A”).NumberFormat = “dd-mm-yyyy”
End Sub
RANGE nesnesinde tüm sütun adresini A:A olarak verdik.
Bu, tarih biçimini aşağıdaki gibi Tarih, Ay ve Yıl olarak değiştirecektir.
Örneğin Excel'deki aşağıdaki tarih hücresine bakın.
A2 hücre değeri tarih değil çünkü B2 hücresindeki ISNUMBER fonksiyonu FALSE sonucunu döndürdü.
Değer tarih görünümlü metin değeridir, dolayısıyla tarihe dönüştürmek için aşağıdaki kodu kullanabiliriz.
Sub DateFormat_Text()
Dim Original_Value As Variant
Original_Value = Range(“A2”).Value
Dim Target_Value As Long
Target_Value = CDate(Original_Value)
Range(“A2”).Value = CDate(Format(Target_Value, “dd-mm-yyyy”))
End Sub
Yukarıdaki kod gösterildiği gibi TRUE değeri döndürdü.
