VBA Hafta İçi - VBA'da Hafta İçi İşlevi için Adım Adım Kılavuz

Excel VBA Hafta İçi İşlevi

VBA'da hafta içi gün, belirli bir tarihin bir girdi olması koşuluyla, haftanın gününü tanımlamak için kullanılan bir tarih ve saat işlevidir, bu işlev 1 ila 7 aralığında bir tamsayı değeri döndürür, bu işleve isteğe bağlı bir argüman sağlanmıştır. Haftanın ilk günü, ancak haftanın ilk gününü sağlamazsak, işlev varsayılan olarak Pazar'ı haftanın ilk günü olarak kabul eder.

Belirli bir tarihe bakarak hafta içi gün numarasını söyleyebilir miyiz? Evet, haftanın başlangıç ​​gününe bağlı olarak o haftanın gün numarasını söyleyebiliriz. Normal çalışma sayfası işlevlerinde, belirli bir tarih için hafta sayısını söylemek için excel'de WEEKDAY adlı bir işleve sahibiz. VBA'da da aynı şeyi bulmak için aynı işleve sahibiz.

Hafta İçi İşlevi ne işe yarar?

Hafta içi işlevi, sağlanan tarihin hafta içindeki gün numarasını döndürür. Eğer tarih 01 varsa Örneğin, st 07 Nisan inci Nisan ve tarihe 05 gününü bilmek istiyorsanız inci haftanın başlangıç günü Pazartesi ise nisan, bu 5'tir inci günü.

Bunu bulmak için, bir çalışma sayfasında ve VBA'da "Hafta içi" ile aynı işleve sahibiz. Fonksiyonun sözdizimi aşağıdadır.

Tarih: Hangi tarih için haftanın gününü bulmaya çalışıyoruz. Bu, doğru formatta uygun bir tarih olmalıdır.

(Haftanın İlk Günü): sağlanan bir hafta içi belirlemek için Tarih, biz haftanın ilk günü ne bahsetmek gerekir. Varsayılan olarak, VBA "Pazartesi" yi haftanın başlangıç ​​günü olarak kabul eder. Bunun dışında aşağıdaki günleri de tedarik edebiliriz.

Örnekler

Örnek 1

İşlemlere başlamak için önce basit bir örnekle başlayayım. Şimdi “10-Nisan-2019” tarihinin hafta içi gününü bulmaya çalışacağız.

Adım 1: Değişkeni String olarak tanımlayın

Kod:

Sub Weekday_Example1 () Dim k As String End Sub
Adım 2: Değişkene değer atayın

HAFTA GÜNÜ işlevini uygulayarak değeri "k" değişkenine atayın.

Kod:

Alt Weekday_Example1 () Dim k As String k = Hafta içi (End Sub
Adım 3: İşlevde Tarih Girin

Burada test ettiğimiz tarih "10 Nisan 2019", bu nedenle tarihi "10 Nisan 2019" olarak geçin.

Kod:

Alt Hafta içi_Örnek1 () Dim k As String k = Hafta içi ("10-Nis-2019" End Sub
Adım 4: MsgBox'ta Değişkenin Değerini Göster

Varsayılan olarak, haftanın ilk gününü "Pazartesi" olarak alır, bu nedenle bu bölümü dikkate almayın. Desteği kapatın. Sonraki satır, VBA mesaj kutusundaki "k" değişkeninin değerini gösterir.

Kod:

Alt Hafta Günü_Örnek1 () Dim k As String k = Hafta içi ("10-Nis-2019") MsgBox k End Sub

Tamam, bitirdik.

Biz kod çalıştırmasına, biz Pazar başlayarak, çünkü verilen tarihi (10 Nisan-2019) 4 düşer “4” olarak sonuç elde edecek inci haftanın gününü.

Not: Sistemimin haftanın başlangıç ​​günü "Pazar" dır.

Benzer şekilde, haftanın başlangıç ​​gününü değiştirirseniz, değişmeye devam eder. Aşağıda bunun için bir örnek satır var.

Kod:

k = Hafta içi ("10-Nis-2019", vbMonday) 'Bu, 3 k = Hafta içi ("10-Nis-2019", vbTuesday) döndürür' Bu, 2 k = Hafta içi ("10-Nis-2019", vbÇarşamba) döndürür 'Bu, 1 k = Hafta içi ("10-Nis-2019", vbThursday) döndürür' Bu, 7 k = Hafta içi ("10-Nisan-2019", vbFriday) döndürür 'Bu, 6 k = Hafta içi ("10-Nis-2019 ", vbSaturday) 'Bu, 5 k = Hafta içi (" 10-Nis-2019 ", vbSunday) döndürür' Bu, 4 değerini döndürür

Örnek 2 - Tarih Hafta Sonunda Olsun ya da Olmasın

Aşağıdaki gibi bir tarihiniz olduğunu varsayalım ve bir sonraki hafta sonu tarihini bulmak istiyorsanız, sonuçlara ulaşmak için WEEKDAY işlevini kullanabiliriz.

Sonuca ulaşmak için WEEKDAY'i IF koşulu ve döngüleri ile kullanmalıyız. Mantığı almak için satır satır gitmeniz için kodu yazdım.

Kod:

Sub Weekend_Dates () Dim k As Integer For k = 2 To 9 If Weekday (Cells (k, 1) .Value, vbMonday) = 1 Then Cells (k, 2) .Value = Cells (k, 1) + 5 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 2 Then Cells (k, 2) .Value = Cells (k, 1) + 4 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 3 Then Cells (k, 2) .Value = Cells (k, 1) + 3 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 4 Then Cells (k, 2) .Value = Cells (k, 1) + 2 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 5 Then Cells (k, 2) .Value = Cells (k, 1) + 1 Else Cells (k, 2) .Value = "Bu aslında hafta sonu Tarih "Bitiş Olursa Bitir k Abonelik Sonu

Bu, aşağıdaki sonuçlara ulaşacaktır.

B6 ve B7 hücrelerine bakın. Sonucu "Bu aslında hafta sonu tarihi" olarak aldık çünkü "04-Mayıs-2019" ve "06-Nisan-2019" tarihleri ​​aslında hafta sonu tarihleri, bu nedenle hafta sonu tarihleri ​​için hafta sonu tarihini göstermeye gerek yok. Varsayılan olarak, sonucu bu şekilde alırız.

Ilginç makaleler...