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

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
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
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
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
 

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
ç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
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
Rica ederim.
Kendiniz deneyebilirsiniz belki oluyordur.
 

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
olmadı hocam bu kod tarih şeklinde veriyor gün sayısı olarak vermiyor
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
Yukarıdaki kodu aynen kullansanız böyle bir sorunla karşılaşamazsınız.
 
Son düzenleme:

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
evet hocam dediğiniz gibi yaptım çalıştı teşekkür ederim
 

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
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

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
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
 

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
kontrol ediyorum hocam
 

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
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
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
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
 

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
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
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
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
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
ç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
 

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
Deniyorum ömer hocam
 

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
Teşekkür ederim muzaffer hocam deniyorum sizinkinide
 

arrow3441

Altın Üye
Katılım
31 Ekim 2022
Mesajlar
294
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
07-11-2024
Ö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ı
 
Üst