• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

2 tarih arası pazar hariç gün sayısı

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
297
Excel Vers. ve Dili
2016
Merhaba textbox1 izin başlangıç textbox2 izin bitiş tarihi var 2 tarih arası gün sayısını nasıl bulabilirim pazar günleri hariç olucak kod olursa daha iyi textbox3 sonucu göstermesi gerekiyor teşekkür ederim
 
Merhaba.
Kod:
Private Sub CommandButton1_Click()
    Dim Bak As Long
    TextBox3.Text = 0
    For Bak = DateValue(TextBox1.Text) To DateValue(TextBox2.Text)
        If Not Weekday(FormatDateTime(Bak, vbShortDate), 2) = 1 Then
            TextBox3.Text = TextBox3.Text + 1
        End If
    Next
End Sub
 
çok teşekkür ederim muzaffer bey kod sağlıklı çalışıyor

TextBox8 = Format(Application.WorksheetFunction.WorkDay_Intl(CDate(TextBox4.Value), TextBox6.Value, 11), "dd.mm.yyyy")
bu şekilde yapılabilirmi acaba
 
Rica ederim.
Kendiniz deneyebilirsiniz belki oluyordur.
 
olmadı hocam bu kod tarih şeklinde veriyor gün sayısı olarak vermiyor
 
Yukarıdaki kodu aynen kullansanız böyle bir sorunla karşılaşamazsınız.
 
Son düzenleme:
evet hocam dediğiniz gibi yaptım çalıştı teşekkür ederim
 
hocam şöyle bir şey yapabilirmiyiz . Userform var başlangıç tarihi izin başlangıçı yazdım gün textboxunada kaç gün çıkıcaksa izne onu yazdım bitiş tarihini kendisi vericek işe başlama tarihine kendisi otomatik yazıcak şekilde.

Diyelim 12.12.2022 izne çıkış tarihi 14 gün yazdım pazar günleri saymıcak 27.12.2022 bitiş tarihi 28.12.2022 işe başlangıç tarihi
 

Ekli dosyalar

Aşağıdaki kodu formun kod sayfasına kopyalayın.
Giriş Tarihi kısmına tarih ve Kaç Gün İzin kısmına rakam girdiğinizde kodlar otomatik çalışır.

Kod:
Private Sub TextBox4_Change()
    Hesapla
End Sub

Private Sub TextBox6_Change()
    Hesapla
End Sub

Sub Hesapla()
    Dim Bak As Long
    Dim Tatil As Long
    If IsDate(TextBox4.Text) And IsNumeric(TextBox6.Text) Then
        For Bak = DateValue(TextBox4.Text) To DateAdd("d", TextBox6.Text, DateValue(TextBox4.Text))
            If Weekday(FormatDateTime(Bak, vbShortDate), 1) = 1 Then
                Tatil = 1 + Tatil
            End If
        Next
        TextBox5.Text = DateAdd("d", TextBox6.Text + Tatil, DateValue(TextBox4.Text))
        If Weekday(FormatDateTime(DateValue(TextBox5.Text), vbShortDate), 1) = 1 Then
            TextBox5.Text = DateAdd("d", 1, DateValue(TextBox5.Text))
        End If
    End If
End Sub
 
Muzaffer hocam işe başlangıç tarihi gelmedi ama birde şu var 12 sinde izne çıktysa 27 bitiş tarihi olması gerekiyor ve 28 de işe başlangıç tarihi
 
Deneyiniz.

Kod:
Private Sub TextBox4_Change()
    Hesapla
End Sub

Private Sub TextBox6_Change()
    Hesapla
End Sub

Sub Hesapla()
    Dim Bak As Long
    Dim Tatil As Long
    If IsDate(TextBox4.Text) And IsNumeric(TextBox6.Text) Then
        For Bak = DateValue(TextBox4.Text) To DateAdd("d", TextBox6.Text, DateValue(TextBox4.Text))
            If Weekday(FormatDateTime(Bak, vbShortDate), 1) = 1 Then
                Tatil = 1 + Tatil
            End If
        Next
        TextBox5.Text = DateAdd("d", TextBox6.Text + Tatil - 1, DateValue(TextBox4.Text))
        TextBox8.Text = DateAdd("d", 1, DateValue(TextBox5.Text))
        If Weekday(FormatDateTime(DateValue(TextBox8.Text), vbShortDate), 1) = 1 Then
            TextBox8.Text = DateAdd("d", 1, DateValue(TextBox8.Text))
        End If
    End If
End Sub
 
evet hocam şimdi çok iyi çalıştı çok teşekkür ederim . Son bir şey daha kaldı hocam combobox1 değeri RAPORLU ise hafta sonlarını sayıcak yani 12.12.2022 rapor tarihi ise 14 gün raporlu olursa 25.12.2022 bitiş tarihi 26.12.2022 ise işe başlama tarihi olarak hesaplaması nasıl olur . BU şekilde yaptım fakat uyarlamadım

Kod:
If combobox1.value="YILLIK İZİN" then
  Dim Bak As Long
    Dim Tatil As Long
  
    If IsDate(TextBox4.Text) And IsNumeric(TextBox6.Text) Then
        For Bak = DateValue(TextBox4.Text) To DateAdd("d", TextBox6.Text, DateValue(TextBox4.Text))
            If Weekday(FormatDateTime(Bak, vbShortDate), 1) = 1 Then
                Tatil = 1 + Tatil
            End If
        Next
        TextBox5.Text = DateAdd("d", TextBox6.Text + Tatil - 1, DateValue(TextBox4.Text))
        TextBox8.Text = DateAdd("d", 1, DateValue(TextBox5.Text))
        If Weekday(FormatDateTime(DateValue(TextBox8.Text), vbShortDate), 1) = 1 Then
            TextBox8.Text = DateAdd("d", 1, DateValue(TextBox8.Text))
        End If
    End If
    
    Else
     If IsDate(TextBox4.Text) And IsNumeric(TextBox6.Text) Then
        For Bak = DateValue(TextBox4.Text) To DateAdd("d", TextBox6.Text, DateValue(TextBox4.Text))
            If Weekday(FormatDateTime(Bak, vbShortDate), 1) = 1 Then
                Tatil = 1 + Tatil
            End If
        Next
        TextBox5.Text = DateAdd("d", TextBox6.Text - 1, DateValue(TextBox4.Text))
        TextBox8.Text = DateAdd("d", 1, DateValue(TextBox5.Text))
        If Weekday(FormatDateTime(DateValue(TextBox8.Text), vbShortDate), 1) = 1 Then
            TextBox8.Text = DateAdd("d", 1, DateValue(TextBox8.Text))
        End If
    End If
    End If
 
Kod:
Sub Hesapla()
    Dim Bak As Long
    Dim Tatil As Long
    If combobox1.Value = "RAPORLU" Then
        TextBox5.Text = DateAdd("d", TextBox6.Text - 1, DateValue(TextBox4.Text))
        TextBox8.Text = DateAdd("d", 1, DateValue(TextBox5.Text))
    Else
        If IsDate(TextBox4.Text) And IsNumeric(TextBox6.Text) Then
            For Bak = DateValue(TextBox4.Text) To DateAdd("d", TextBox6.Text, DateValue(TextBox4.Text))
                If Weekday(FormatDateTime(Bak, vbShortDate), 1) = 1 Then
                    Tatil = 1 + Tatil
                End If
            Next
            TextBox5.Text = DateAdd("d", TextBox6.Text + Tatil - 1, DateValue(TextBox4.Text))
            TextBox8.Text = DateAdd("d", 1, DateValue(TextBox5.Text))
            If Weekday(FormatDateTime(DateValue(TextBox8.Text), vbShortDate), 1) = 1 Then
                TextBox8.Text = DateAdd("d", 1, DateValue(TextBox8.Text))
            End If
        End If
    End If
End Sub
 
çok teşekkür ederim muzaffer bey kod sağlıklı çalışıyor

TextBox8 = Format(Application.WorksheetFunction.WorkDay_Intl(CDate(TextBox4.Value), TextBox6.Value, 11), "dd.mm.yyyy")
bu şekilde yapılabilirmi acaba

Merhaba,
Bu format için Muzaffer bey'in yazdığı hesapla kodunu aşağıdaki gibi yazabilirmisiniz.
Kod:
Sub Hesapla()
    If IsDate(TextBox4.Text) And IsNumeric(TextBox6.Text) Then
        TextBox5.Text = CDate(WorksheetFunction.WorkDay_Intl(CDate(TextBox4), Val(TextBox6) - 1, 11))
        TextBox8.Text = CDate(WorksheetFunction.WorkDay_Intl(CDate(TextBox4), Val(TextBox6), 11))
    End If
End Sub
 
Ömer hocam çalıştı doğru şekilde. Birde bu şekilde sizin koda uyarlabilirmiyiz o şekilde denemek istiyorum doğru sonuç vercekmi
combobox1 değeri RAPORLU ise hafta sonlarını sayıcak yani 12.12.2022 rapor tarihi ise 14 gün raporlu olursa 25.12.2022 bitiş tarihi 26.12.2022 ise işe başlama tarihi olarak hesaplaması
 
Geri
Üst