Excel VBA Format() fonksiyonu, sayısal veya dize ifadesini belirli bir biçimde biçimlendirmek için kullanılır. Giriş ifadesinde belirtilen biçimlendirilmiş değeri temsil eden bir dize döndürür.
VBA biçim koşullarını tam olarak kullanmak için, verileri istemciler veya diğer amaçlar için daha anlaşılır, okunabilir bir biçime biçimlendirmede birçok kullanımının farkında olunmalıdır. Biçimlendirme, virgülle sayılar eklemekten tarihleri başka biçimlere değiştirmeye kadar uzanabilir. Format() işlevi sayıları, tarihleri, saatleri ve para birimi değerlerini biçimlendirebilir. Örneğin, bir tarih değerini biçimlendirmek için aşağıdaki kodu kullanabilirsiniz:

Burada açılan kutuya bugünün tarihi belirtilen formatta yazdırılacaktır.

- VBA Biçim işlevi bir değeri (örneğin bir sayı veya tarih) belirli bir biçime sahip bir dizeye dönüştürür. Çıktı dizesinin nasıl görüneceğini belirtmek için biçim kodlarını kullanabilirsiniz (örneğin, ondalık basamak sayısı, tarih biçimi, vb.).
- İşlev biçimlendirilmiş değeri temsil eden bir dize döndürür ve orijinal giriş ifadesini değiştirmez. Sayılar, tarihler, saatler ve metin dahil olmak üzere farklı veri türlerini biçimlendirebilir.
- VBA Biçimlendirme işlevi güçlüdür ancak karmaşıktır ve etkili bir şekilde kullanmak için biçim kodları hakkında biraz bilgi gerektirir. Özellikle tarih ve saatleri biçimlendirirken, giriş değerinin geçerli olduğundan emin olmak önemlidir.
VBA Formatının Sözdizimi
VBA Format fonksiyonunun söz dizimi aşağıdaki gibidir.

İşte argümanların kısa bir açıklaması:
- Expression - ifade (gerekli): Biçimlendirmek istediğiniz ifade.
- Format - biçim (isteğe bağlı): İfadeye uygulamak istediğiniz biçim kodu. Bu bağımsız değişkeni atlarsanız, işlev ifadenin veri türü için varsayılan biçimi kullanır.
- firstdayofweek (isteğe bağlı): Haftanın ilk gününü belirten bir sayı. Bu argümanı atlarsanız, işlev sistemin varsayılan değerini kullanır.
- yılınilkhaftası (isteğe bağlı): Yılın ilk haftasını belirten bir sayı. Bu argümanı atlarsanız, işlev sistemin varsayılan değerini kullanır.
Excel VBA Formatı Nasıl Kullanılır?
VBA Format text komutuna erişmek için, onu uygulayacak gerekli kodu yazın ve hazır bulundurun.
Adım 1: Araç çubuğundaki “ Geliştirici ” sekmesine gidin ve “ Visual Basic ” seçeneğine tıklayın. Şimdi, işlevler ve alt prosedürler eklemek için VBA Düzenleyicisi açılır. Sonra, yeni bir modül veya boş sayfa oluşturmak için “ Ekle ” düğmesine ve ardından “ Modül ” düğmesine tıklayın.


Adım 2: Bugünün tarihini “MM/DD/YYYY” biçiminde görüntülemek istediğiniz bir örneği ele alalım. Bu, VBA Biçim koşullarını “DD/MM/YYYY”den (Excel'in varsayılan gösterimi) “MM/DD/YYYY”ye değiştirerek yapılabilir.
Adım 3: Excel'deki tarih biçimini değiştirmek için FormatDate() adında bir fonksiyon oluşturun .

Adım 4: “myDate” adında, veri türü Tarih olan bir değişken tanımlayın.

Adım 5: “GG/AA/YYYY” biçimindeki tarihleri kabul eden DateSerial() fonksiyonunu kullanarak myDate için bir değer başlatın.

Adım 6: Debug.Print fonksiyonunu kullanarak bunu hemen terminalde yazdırın. VBA Format fonksiyonunu uygulayın ve karşılaştırmak ve zıtlaştırmak için tekrar yazdırın.

Adım 7: F5 veya Çalıştır düğmesine basarak kodu çalıştırın. Aşağıda görüldüğü gibi yazdırılacaktır.

İlk çıktı, tarihi Excel'in varsayılan biçimi olan "GG/AA/YYYY" biçiminde yazdıracaktır ve ikinci çıktı, gösterildiği gibi tarihi "AA/GG/YYYY" biçiminde yazdıracaktır.
Kod:
Sub FormatDate()
Dim myDate As Date
myDate = DateSerial(2023, 4, 1)
Debug.Print myDate
Debug.Print Format(myDate, “mm/dd/yyyy”)
End Sub
Biçim İşlevi kullanılarak değiştirilebilen diğer Biçimler
Para Birimi Formatı
Tabloyu inceleyelim:

Burada para birimini eklemeli ve sayıyı daha okunabilir hale getirmek için VBA formatlı sayıyı kullanmalısınız .
Adım 1: VBA Editör'de yukarıdaki sayıları biçimlendiren FormatFinancialData() fonksiyonunu tanımlayın.

Adım 2: Fonksiyonda, rngRevenue, rngExpenses ve rngProfit değişkenlerini Range veri türü ve ws veri türü olarak Worksheet olarak başlatın (çalışması gereken sayfa numarasını tanımlamak için).

Adım 3: Yukarıda belirtilen tüm değişkenler için değerleri tanımlayın. Gelir, gider ve kar aralıkları sırasıyla A2-A10, B2-B10 ve C2-C10'dur.

Bu fonksiyonun uygulanacağı çalışma sayfası Sheet1 olarak belirtilmiştir.
Adım 4: Para birimi sembolünün sayısından önce “$” ekleyerek tablonun tüm aralığını para birimine dönüştürmek için bir FOR döngüsü başlatın.

- Burada, rngRevenue.Rows.Count, rngRevenue aralığındaki satır sayısını temsil eder.
- “i” kullanılarak her satırın numarası “S#,##0.00” biçiminde biçimlendirilir ve ondalık değerlerdeki dolar cinsinden para birimini temsil eder.
- Virgül, Amerikan sayı sistemine göre sayıları ayırmak için eklenir.
Adım 5: Kodu çalıştırmak için VBA araç çubuğundaki yeşil ok düğmesine tıklayın.

Kod:
Sub FormatFinancialData()
Dim rngRevenue As Range
Dim rngExpenses As Range
Dim rngProfit As Range
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(“Sheet1”)
Set rngRevenue = Range(“A2:A10”)
Set rngExpenses = Range(“B2:B10”)
Set rngProfit = Range(“C2:C10”)
For i = 1 To rngRevenue.Rows.Count
rngRevenue.Cells(i).Value = Format(rngRevenue.Cells(i).Value, “$#,##0.00”)
rngExpenses.Cells(i).Value = Format(rngExpenses.Cells(i).Value, “$#,##0.00”)
rngProfit.Cells(i).Value = Format(rngProfit.Cells(i).Value, “$#,##0.00”)
Next i
End Sub
Adım 6: Çıktı aşağıda gösterilmektedir.

Lütfen Excel'in şu anda kullandığınız herhangi bir ülkenin ulusal para birimine otomatik olarak dönüşeceğini unutmayın. Yani, örneğin, sisteminiz Japonya ayarlarıyla yapılandırılmışsa, Yen simgesini (¥) alacaksınız.
Sabit Format
Bir tabloyu ele alalım:

Bunu yalnızca bir ondalık basamağa kadar görüntüleyecek şekilde biçimlendirmeliyiz. Bunun için VBA biçim numarasını kullanacağız.
Adım 1: Biçimlendirmeye başlamak için, yukarıda belirtildiği gibi sayıları biçimlendiren FormatFixedData() adlı bir prosedür oluşturun.

Adım 2: Prosedür içerisinde rngData değişkenlerini Range veri türü ve ws'yi Worksheet olarak başlatın.

Adım 3: Yukarıda belirtilen her iki değişken için değerleri başlatın. rngData'yı tablonun boyutuna veya aralığına ayarlayın. Bu durumda, A2:A10'dandır. Sonra, çalışma sayfasını üzerinde çalıştığınız geçerli sayfaya ayarlayın. Bu durumda, "Sheet2"dir.

Adım 4: Tüm tabloyu yinelemeli olarak dolaşan ve sayıları bir ondalık basamağa kadar biçimlendiren bir FOR döngüsü başlatın. VBA Biçimlendirme işlevi tüm hücre değerlerini bir ondalık basamağa kadar biçimlendirir.

Adım 5: Fonksiyonu çalıştırmak için VBA araç çubuğundaki yeşil üçgene basın.

Kod:
Sub FormatFixedData()
Dim rngData As Range
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(“Sheet2”)
Set rngData = Range(“A2:A10”)
For Each cell In rngData
cell.Value = Format(cell.Value, “0.#”)
Next cell
End Sub
Adım 6: Çıktı aşağıdaki gibidir.

Yüzde Biçimi
Tabloyu inceleyelim:

Bunu VBA Format() fonksiyonunu kullanarak yüzdelik veriye dönüştürmemiz gerekiyor.
Adım 1: VBA'da sayıları biçimlendirmek için, yukarıda belirtilen sayıları biçimlendirmek üzere FormatPercentageData() adlı bir işlem oluşturun.

Adım 2: Sayıları yüzde biçiminde biçimlendirmek için Aralık veri türü olarak rngData ve Çalışma Sayfası olarak ws değişkenlerini kullanıyoruz.

Adım 3 : Yukarıda belirtilen her iki değişken için değerleri başlatın. rngData'yı tablonun boyutuna veya aralığına ayarlayın. Bu durumda, A2:A10'dandır. Sonra, çalışma sayfasını üzerinde çalıştığınız geçerli sayfaya ayarlayın. Bu durumda, "Sheet3"tür.

Adım 4: Tablonun aralığında bulunan her hücreyi ayrıştıran ve bunları yüzde biçimine biçimlendiren bir FOR döngüsü başlatın. Biçimlendirme işlevi her hücreyi inceler ve verileri yüzde biçimine dönüştürür.

Adım 5: Çıktıyı görmek için kodu çalıştırın.

Kod:
Sub FormatPercentageData()
Dim rngData As Range
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(“Sheet3”)
Set rngData = Range(“A2:A10”)
For Each cell In rngData
cell.Value = Format(cell.Value, “0.00%”)
Next cell
End Sub
Adım 6: Çıktı aşağıda gösterilmektedir:

Yukarıda görüldüğü gibi her sayı 100 ile çarpılarak yüzde değeri elde edilir ve yüzde formatında gösterilir.
Kullanıcı Tanımlı Format
Tabloyu inceleyelim:

Bunu, kolay tanımlama için bir işaretleyiciyle birlikte kullanıcı tanımlı ve okunabilir bir biçime dönüştürmeliyiz. Burada her değerin sonuna "/$M" ekliyoruz.
Adım 1: Başlamak için yukarıdakileri biçimlendirmek üzere FormatCustomData() adlı bir alt prosedür oluşturun.

Adım 2: rngData değişkenini Aralık veri türü ve ws değişkenini Çalışma Sayfası veri türü olarak oluşturun.

Adım 3: Yukarıda belirtilen her iki değişken için değerleri başlatın. rngData'yı tablonun boyutuna veya aralığına ayarlayın. Bu durumda, A2-A10 arasındadır. Sonra, çalışma sayfasını üzerinde çalıştığınız geçerli sayfaya ayarlayın. Bu durumda, "Sheet4"tür.

Adım 4: Tablonun aralığında bulunan her hücreyi ayrıştıran ve özel biçimlendirmeler uygulayan bir FOR döngüsü başlatın. VBA Biçimlendirme işlevi her hücreyi inceler ve verileri dönüştürür, sayıları virgülle ayırır ve sonuna kolay görüntüleme için bir dize ekler.

Adım 5: Fonksiyonu çalıştırmak için VBA araç çubuğundaki yeşil üçgene basın.

Kod:
Sub FormatCustomData()
Dim rngData As Range
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(“Sheet4”)
Set rngData = Range(“A2:A10”)
For Each cell In rngData
cell.Value = Format(cell.Value, “#,##0.00 /$M”)
Next cell
End Sub
Adım 6: Çıktı aşağıda gösterilmektedir:

Tarih Biçimi
Tarihleri sürekli olarak manuel olarak değiştirmek yerine, her zaman dinamik olarak tam saati, tarihi ve günü görüntülemek istediğiniz bir örneği ele alalım.
Bu örnekte görüldüğü gibi saat, tarih ve günü görüntülemek için VBA format fonksiyonunu kullanabilirsiniz.
Adım 1: Başlamak için, tarihi gün ve saati görüntüleyecek şekilde biçimlendiren DateFormat() alt prosedürünü oluşturun.

Adım 2: Fonksiyonda, Date veri türünde myDate değişkenini başlatın ve ona “Date” atayın. Excel'deki Date, geçerli tarihi döndürür.

Adım 3: Veri türü String olan formattedDate değişkenini tanımlayın. Bu değişken, Debug.Print kullanılarak yazdırılabilmesi için biçimlendirilmiş tarihi depolar.

Burada,
- “dddd” verilen tarihe yakın haftanın gününü döndürür.
- “mmmm” sayı yerine VBA biçimli metin olarak ayı döndürür.
- “yyyy” geçerli yılı döndürür. “hh:mm:ss” saati 24 saatlik biçimde döndürür, ancak “AM/PM” eklersek bunu 12 saatlik biçime dönüştürebiliriz.
Adım 4: Fonksiyonu çalıştırmak için VBA araç çubuğundaki yeşil üçgene basın.

Kod:
Sub DateFormat()
Dim myDate As Date
myDate = Date
Dim formattedDate As String
formattedDate = Format(myDate, “dddd, mmmm dd, yyyy – hh:mm:ss AM/PM”)
Debug.Print formattedDate
End Sub
Adım 5: Çıktı aşağıda gösterilmektedir.

Dikkat Edilmesi Gereken Önemli Noktalar
- Sayıları biçimlendirirken, bazen hücreler “####” değerlerini görüntüleyebilir. Bu, hücreye çift tıklanarak ve sayı görüntülenerek veya hücrenin aralığı değiştirilerek çözülebilir.
- VBA Format işlevi bir sayı veya tarih değil, bir dize döndürür. Format işlevini bir sayı veya tarihi biçimlendirmek için kullandığınızda, sonuç biçimlendirilmiş değeri temsil eden bir dizedir. Sonucu bir dize değişkenine atayabilir veya bir dize ifadesinde kullanabilirsiniz.
- Format fonksiyonunda kullanılan format kodları VBA'ya özeldir ve Excel veya Access gibi diğer programlarda kullanılanlardan farklı olabilir.
- Format işlevini tarihler veya saatlerle kullanırken, giriş değerinin geçerli bir tarih veya saat değeri olduğundan emin olmalısınız. Giriş değeri geçerli bir tarih veya saat değilse, Format işlevi beklenmeyen sonuçlar döndürebilir.
1. Yanlış biçimlendirme kodu: Biçim işlevi düzgün çalışması için geçerli bir biçimlendirme kodu gerektirir.
2. Veri türü uyuşmazlığı: Biçim işlevi, doğru veri türünde olmayan verileri biçimlendirmeye çalışıyorsanız çalışmayabilir. Örneğin, metni sayı veya tarih olarak biçimlendiremezsiniz.
3. Geçersiz veri: Biçimlendirmeye çalıştığınız veriler geçersizse veya hatalar içeriyorsa Biçim işlevi çalışmayabilir.
4. Uyumluluk sorunları: Excel'in bazı sürümleri belirli Biçim işlevi kodlarını veya seçeneklerini desteklemeyebilir.
5. Sözdizimi hataları: VBA kodunuzda sözdizimi hataları varsa Biçim işlevi çalışmayabilir. Hatalardan arınmış olduğundan emin olmak için kodunuzu iki kez kontrol edin.
VBA'daki FormatNumber işlevi, sayısal bir değeri belirtilen sayıda ondalık basamak ve binlerce ayırıcı içeren bir dize olarak biçimlendirir. Aşağıdaki sözdizimini kullanır:
FormatNumber(Expression[,NumDigitsAfterDecimal][,IncludeLeadingDigit] [,UseParensForNegativeNumbers] [,GroupDigits])
Excel VBA'da zamanı biçimlendirmek için, uygun biçim koduyla Biçim işlevini kullanın. VBA'daki zaman değerleri için biçim kodu "hh:mm:ss AM/PM"dir. İşte bir zaman değerini biçimlendirmek için Biçim işlevinin nasıl kullanılacağına dair bir örnek:
Bu örnekte, Now fonksiyonu myTime değişkeninde depolanan geçerli saati almak için kullanılır. Format fonksiyonu daha sonra myTime değişkenini “hh:mm:ss AM/PM” biçim kodunu kullanarak bir dize olarak biçimlendirir. Biçimlendirilmiş saat daha sonra Debug.Print ifadesi kullanılarak Immediate penceresinde görüntülenir.
• VBA'da, metin dizelerini çeşitli şekillerde biçimlendirmek için Biçim işlevini kullanabilirsiniz. VBA biçim metin işlevi iki argüman alır: biçimlendirilmiş ifade ve ifadenin nasıl biçimlendirileceğini belirten bir biçim dizesi.
• Biçim dizesi, tırnak işaretleri içine alınmış bir dizi yer tutucudan oluşur ve her yer tutucu, biçimlendirilmiş dizeye belirli bir bilgi parçasının nereye ekleneceğini belirtir.
• Aşağıda bir örnek verilmiştir:
Metni büyük harfle biçimlendir:
Bu örnekte UCase fonksiyonu myString değişkenini tamamen büyük harfe dönüştürür.
