EXCEL VBA'DA FORMAT DATE FONKSİYONU

 


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.


VBA Biçimi Tarih Giriş

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.

VBA Biçimi Tarih - Sözdizimi

İ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 EkranTanım
D8Bu, yalnızca verilen tarihin gününü, öndeki sıfırlar olmadan görüntüler
gün08Bu, yalnızca verilen tarihin gününü öndeki sıfırlarla birlikte görüntüler
ddddÇarşambaBu, günün kısa adıyla günü gösterecektir
gggggÇarşambaBu, günün uzun adıyla günü gösterecektir
M8Bu, yalnızca verilen tarihin ayını öndeki sıfırlar olmadan görüntüler
mm08Bu, yalnızca verilen tarihin ayını öndeki sıfırlarla birlikte görüntüler
hımmmAğustosBu, ayın kısa adıyla ayı gösterecektir
hımmmAğustosBu, ayın uzun adıyla ayı gösterecektir
yy23Bu, tarihin yılını 2 haneli olarak gösterecektir
yyyyyy2023Bu, 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.

VBA tarih biçimi - Sayı biçimi - Örnek 1

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.

VBA Biçimi Tarih - Editör

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

VBA tarih biçimi - Sayı biçimi - Örnek 1 - Alt

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.

VBA tarih biçimi - Sayı biçimi - Örnek 1 - Adım 1

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

VBA tarih biçimi - Sayı biçimi - Örnek 1 - Adım 2

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

VBA tarih biçimi - Sayı biçimi - Örnek 1 - Adım 2 - Özellikler

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

VBA tarih biçimi - Sayı biçimi - Örnek 1 - Adım 3

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

VBA tarih biçimi - Sayı biçimi - Örnek 1 - Adım 4

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”

VBA tarih biçimi - Sayı biçimi - Örnek 1 - Adım 5

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

VBA tarih biçimi - Sayı biçimi - Örnek 1 - Çıktı

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.

VBA tarih biçimi - Sayı biçimi - Örnek 2 - Kod

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

VBA tarih biçimi - Sayı biçimi - Örnek 2 - çalıştır

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

VBA tarih biçimi - Sayı biçimi - Örnek 2 - çıktı

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.

VBA Biçimi tarih - Biçim - Örnek 1

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

Örnek 1 - Adım 1

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

Örnek 1 - Adım 2

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.

Örnek 1 - Adım 3

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.

Örnek 1 - Adım 4

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

Örnek 1 - Adım 5

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.

VBA Biçimi tarih - Biçim - Örnek 1 - Adım 6

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.

VBA Biçimi tarih - Biçim - Örnek 1 - Çıktı

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.

Örnek 2 -1

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ç:

VBA Biçimi tarih - Biçim - Örnek 2 - 2
3 – Kısa İsimle Ayı Göster

Kod: Range(“A2”).Value = Format(MyDate, “mmm”)

Sonuç:

VBA Biçimi tarih - Biçim - Örnek 2 - 3
4 – Ayın Tam Adıyla Gösterimi

Kod: Range(“A2”).Value = Format(MyDate, “mmmm”)

Sonuç:

VBA Biçimi tarih - Biçim - Örnek 2 - 4
5 – Tarihi GG – AA – YYY Formatında Göster

Kod: Range(“A2”).Value = Format(MyDate, “gg-aa-yyyy”)

Sonuç:

VBA Biçimi tarih - Biçim - Örnek 2 - 5
#6 – Tarihi MM – DD – YYYY Formatında Göster

Kod: Range(“A2”).Value = Format(MayDate, “gg-aaa-yyyy”)

Sonuç:

VBA Biçimi tarih - Biçim - Örnek 2 - 6
7 – Tarihi YYYY – AA – GG Formatında Göster

Kod: Range(“A2”).Value = Format(MyDate, “yyyy-aaa-gg”)

Sonuç:

VBA Biçimi tarih - Biçim - Örnek 2 - 7
8 – Yılı Sadece 2 Haneli Olarak Göster

Kod: Range(“A2”).Value = Format(MyDate, “gg-aa-yy “)

Sonuç:

VBA Biçimi tarih - Biçim - Örnek 2 - 8

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.

1. VBA Tarih Formatı Neden Çalışmıyor?

Örneğin Excel'deki şu tarihe bakalım.

VBA formatı tarih - SSS 2 - veri

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.

VBA biçimi tarih - SSS 2 - Çıktı

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.

2. Excel'de Tarih Sütununu nasıl biçimlendiririm?

Örneğin Excel'deki aşağıdaki tarih sütununa bakın.

SSS 3

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.

SSS 3 - Çıktı

3. Metin Kutusu Tarihini Tarih Olarak Nasıl Biçimlendirebilirim?

Örneğin Excel'deki aşağıdaki tarih hücresine bakın.

SSS 4

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ü.

SSS 4 - Çıktı

Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...