VBA'da, Day işlevi belirtilen bir tarihten gün bileşenini çıkarmak için kullanılır. Bir argüman olarak bir tarih alır ve ayın gününü temsil eden bir tam sayı döndürür. Aşağıdaki örneğe bakın:

VBA Day işlevini kullanarak iki basamaklı bir alt prosedür tanımlayın ve verilen tarihten “GG” bileşenini çıkarın. Sonuç, gösterildiği gibi Hemen sekmesinde yazdırılır. Tarih biçimi “AA/GG/YYYY”dir.

- VBA'daki Day fonksiyonu bir tarihten gün bileşenini çıkarmak için kullanılır.
- Bir argüman olarak bir tarih alır ve ayın gününü temsil eden bir tam sayı döndürür.
- Çıkarılan gün, zaman bileşenini içermez.
- Geçersiz tarihleri işleyemediğinden, fonksiyonu kullanmadan önce tarihleri doğrulamak önemlidir.
- Zaman bileşenleriyle çalışırken, Day fonksiyonunu uygulamadan önce zaman kısmını kaldırmak için DateValue fonksiyonunu kullanmayı düşünün.
Sözdizimi
VBA Day fonksiyonunu kullanmanın söz dizimi gösterildiği gibidir.
Day(date)
Neresi,
- tarih(date): Tarih değerini tutan değişken.
EXCEL VBA Day Fonksiyonu Nasıl Kullanılır?
Aşağıdaki örneği inceleyerek VBA Day fonksiyonunun nasıl kullanılacağını öğrenebilirsiniz.
Adım 1: Excel Çalışma Kitabında, Excel araç çubuğundaki “Geliştirici” bölümüne gidin.

“ Geliştirici ” altında “Visual Basic”i seçerek VBA Düzenleyicisini açın.

VBA Editörünün araç çubuğundan “Ekle”yi seçin, ardından kod yazmak için yeni bir modül açmak üzere “Modül”e gidin.

Adım 2: Haftanın geçerli gününü görüntüleyen bir alt rutin oluşturun.

Adım 3: Tarih değerini depolamak için bir Tarih değişkeni başlatın.

Adım 4: Bugünün tarihini daha önce tanımlanan değişkene atayın.

Adım 5: Tarih değerinin “gün” bileşenini depolamak için bir tamsayı değişkeni başlatın.

Adım 6: Tarih değeri üzerinde VBA Day fonksiyonunu çağırın ve bunu bir tamsayı değişkeninde saklayın.

Adım 7: Haftanın gününü yazdırın. Tarih değerini “DDDD” biçimini kullanarak VBA Biçimlendirme işlevini kullanarak biçimlendirin. Haftanın gününü yazdıracaktır.

Adım 8: MsgBox fonksiyonunu kullanarak üç formatı da yazdırın.

Kod:
Sub AnotherExample()
Dim currentDate As Date
currentDate = Date
Dim dayOfMonth As Integer
dayOfMonth = day(currentDate)
MsgBox “Today is ” & Format(currentDate, “DDDD”)
MsgBox “Today is the ” & dayOfMonth & “th day of the month.”
End Sub
Adım 9: Programı çalıştırmak için Excel VBA Modülündeki etkinlik çubuğundaki “F5” veya “Çalıştır” simgesine tıklayın. Excel'deki farklı tarih biçimleriyle bir Mesaj Kutusu yazdırır .


Artık Excel VBA'da Gün işlevini nasıl kullanacağınızı öğrendiğinize göre, aşağıdaki daha fazla örneği inceleyebilirsiniz.
Örnekler
VBA Day fonksiyonunun çeşitli amaçlar için nasıl kullanılacağını öğrenin.
Örnek 1
VBA Day fonksiyonunun iki basamaklı sonucunu kullanarak, günün çift sayı mı yoksa tek sayı mı olduğunu bulabilirsiniz. Bir giriş tarihi alın, ardından gün numarasını bulun ve VBA Mod fonksiyonunu kullanarak 2'ye bölünebilir olup olmadığını kontrol edin.
Adım 1: Verilen günün tek gün mü yoksa çift gün mü olduğunu bulmak için bir alt program oluşturun.

Adım 2: Kullanıcıdan gelen tarih değerini saklamak için bir Tarih değişkeni tanımlayın.

Adım 3: Kullanıcıdan tarihi alın ve yukarıda tanımlanan tarih değişkenine kaydedin.

Adım 4: Verilen tarihin geçerli olup olmadığını kontrol etmek için bir If-Else koşulu kullanın. Geçerli değilse, bir hata Mesajı kutusu bildirin ve kodun geri kalanının yürütülmemesi için alt dizinden çıkın.

Adım 5: Tarih değerinden gün bileşenini depolamak için bir tamsayı değişkeni tanımlayın.

Adım 6: Kullanıcıdan gelen tarihte VBA Date fonksiyonunu çağırın ve VBA Day fonksiyonundan gelen sonucu tam sayı değişkenine kaydedin.

Adım 7: Bir If-koşullu ifadesi kullanarak, gün bileşeninin 2'ye bölünebilir olup olmadığını kontrol edin. Eğer öyleyse, kullanıcıya günün çift olduğunu söyleyen bir Mesaj Kutusu oluşturun.

Adım 8: Tek gün olup olmadığını kontrol etmek için bir Else-koşullu ifadesi tanımlayın. Bir sayı 2'ye bölünemiyorsa, tek sayıdır.

Kod:
Sub ActionBasedOnDayFunction()
Dim inputDate As Date
inputDate = InputBox(“Enter a date (mm/dd/yyyy):”, “Date Input”)
If Not IsDate(inputDate) Then
MsgBox “Invalid date entered. Please try again.”
Exit Sub
End If
Dim dayOfMonth As Integer
dayOfMonth = day(inputDate)
If dayOfMonth Mod 2 = 0 Then
MsgBox “The day is even.”
Else
MsgBox “The day is odd.”
End If
End Sub
Adım 10: Yukarıdaki alt rutini VBA Araç Çubuğu'ndaki yeşil ok düğmesine tıklayarak çalıştırın.


Bundan, kullanıcıya girdiği tarihin çift gün olduğunu söyleyebilirsiniz.
Örnek 2
Tarihler içeren bir tablonuz olduğunu varsayalım. Tarihin bulunduğu haftanın günüyle birlikte gün numarasını bulmak istiyorsunuz. Bunu yapmak için VBA Day ve VBA Format işlevlerini kullanabilirsiniz. Aşağıdaki adımları izleyin.

Adım 1: Tarihlerin gün numaralarını bulan alt rutini tanımlayın ve bunları bitişik sütunlarda saklayın.

Adım 2: Tablonun boyutunu depolamak için bir aralık değişkeni tanımlayın.

Adım 3: Bu alt rutinin çalışacağı tablonun aralığını ayarlayın.

Adım 4: Tabloda çalışan bir for döngüsü tanımlayın ve aralıktaki her hücreyi tarayın.

Adım 5: Gün numarasını bulmak için VBA Day fonksiyonunu çağırın ve Cells fonksiyonunu kullanarak bitişik sütuna veya ikinci sütuna kaydedin.

Adım 6: Üçüncü sütunda, tabloda verilen tarihin hafta gününü yazdırmak için VBA Biçimlendirme fonksiyonunu “gggg” olarak ayarlayın ve haftanın gününü yazdırın.

Adım 7: FOR döngüsünü sürdürün.

Kod:
Sub FindAllDays()
Dim rng As Range
Set rng = Worksheets(“Sheet5”).Range(“A2:A7”)
For Each i In rng
Cells(i.Row, 2).value = day(i.value)
Cells(i.Row, 3).value = Format(Cells(i.Row, 1).value, “dddd”)
Next i
End Sub
Adım 8: Alt rutini çalıştırmak istediğinizde yeşil ok düğmesine tıklayın. Sonra sonuçlarınızı görmek için “Sheet5”e gidin.

Örnek 3
Mevcut günün asal sayı olup olmadığını bilmek istediğinizi varsayalım. VBA Day işlevini kullanarak gün bileşenini çıkarabilir ve asal sayı olup olmadığını kontrol edebilirsiniz.
Sayı 2'yi sayının kareköküne bölerek asal sayı olup olmadığını bulabilirsiniz. Eğer 2'den sayının kareköküne kadar olan sayılardan hiçbiri bölünemiyorsa, o zaman asal sayıdır; aksi takdirde, bileşik sayıdır.
Adım 1: Verilen bir günün asal sayı olup olmadığını kontrol eden bir alt prosedür tanımlayın.

Adım 2: Bugünün tarihinin gün bileşenini bulun ve bunu bir Tamsayı değişkeninde saklayın.

Adım 3: Verilen sayının asal sayı olup olmadığını kontrol etmek için bir gösterge olarak bir Boolean değişkeni tanımlayın.

Adım 4: Günün 1'den küçük veya eşit olup olmadığını kontrol edin. Eğer öyleyse, Boolean değişkenini False olarak ayarlayın.

Adım 5: Gün 1'den büyükse bir Else koşul bloğu tanımlayın.

Adım 6: 2 sayısından kareköküne kadar bir FOR döngüsü çalıştırın .

Adım 7: Verilen sayı aralıktaki herhangi bir sayıya bölünebiliyorsa, Boolean değişkenini False olarak ayarlayın.

Adım 8: Döngüdeki If koşulunu sonlandırın ve alt prosedürden çıkın.

Adım 9: For döngüsünü devam ettirin. Döngüden sonra, Adım 4'teki If-Else koşulunu sonlandırın.

Adım 10: Boolean değişkeninin doğru olup olmadığını kontrol etmek için başka bir If-koşulu bildirin.

Günü ve asal sayı olduğunu belirten bir Mesaj Kutusu fonksiyonu yazdırın.
Adım 11: Boolean değişkeni False olarak ayarlanmışsa bir Else koşulu tanımlayın.

Kod:
Sub CheckPrimeDay()
Dim currentDay As Integer
currentDay = day(Date)
Dim isPrime As Boolean
isPrime = True
If currentDay <= 1 Then
isPrime = False
Else
Dim i As Integer
For i = 2 To Sqr(currentDay)
If currentDay Mod i = 0 Then
isPrime = False
Exit For
End If
Next i
End If
If isPrime Then
MsgBox “The day of the month (” & currentDay & “) is a prime number!”
Else
MsgBox “The day of the month (” & currentDay & “) is not a prime number.”
End If
End Sub
Adım 12: Mevcut günün asal sayı olup olmadığını görmek için yukarıdaki alt programı çalıştırın.

Bugünün tarihi asal sayı değildir.
Dikkat Edilmesi Gereken Önemli Noktalar
- Zaman bileşenleriyle çalışıyorsanız, Day fonksiyonunu uygulamadan önce zaman bölümünü kaldırmak için DateValue kullanmayı düşünün.
- Gün fonksiyonunun sonucunu, günü temsil eden bir tam sayı döndürdüğü için Integer türündeki değişkenlerde saklayın.
- Gün işlevinin sistemin yerel saatine göre çalıştığını unutmayın. Uygulamanız birden fazla saat dilimini içeriyorsa, herhangi bir saat dilimi farkını hesaba katın.
- Day işlevi haftanın gününü değil ayın gününü çıkarır. Haftanın günü için Weekday işlevini kullanın .
- Gün fonksiyonu yalnızca saat değerleri için değil, tarih değerleri için de kullanılır.
- Amaç biçimlendirilmiş bir tarih görüntülemekse, yalnızca Gün işlevine güvenmek yerine dize biçimlendirme işlevlerini veya özel tarih biçimlendirmesini kullanmayı düşünün.
Evet, değişkeni Day fonksiyonuna argüman olarak geçirerek bir değişkende depolanan bir tarihle Day fonksiyonunu kullanabilirsiniz.
Örneğin,
dayOfMonth = Day(myDate)
Hayır, VBA'daki Day işlevi geçersiz tarihleri işlemez. Day işlevine geçersiz bir tarih geçirirseniz, bu bir çalışma zamanı hatasıyla sonuçlanabilir. Hataları önlemek için Day işlevini kullanmadan önce tarihleri doğrulayın.
Evet, Excel'deki bir hücre referansıyla VBA'da Day işlevini kullanabilirsiniz.
Örneğin
dayOfMonth = Day(Range(“A1”).Value)
VBA'daki Day işlevi, saati hariç tutarak bir tarihten gün bileşenini çıkarır. Saat bileşenlerini işlemek için, saati kaldırmak üzere DateValue işlevini kullanın. dayOfMonth = Day(DateValue(myDateTime))
