İşe Başlama Tarihini Hesaplama

  • Konuyu başlatan Konuyu başlatan ssavas
  • Başlangıç tarihi Başlangıç tarihi
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

ssavas

VIP Üye
Kullanıcı
Katılım
3 Ağu 2017
Mesajlar
247
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba arkadaşlar. Aşağıdaki kod ile hafta sonuna denk gelen günler için, işe başlama tarihini bir sonraki ilk günü olacak şekilde hesaplatıyorum. Ancak kod, hafta içine denk gelen günlerde de bir gün sonrasını hesaplıyor. Kodu hafta içine denk gelen gün ne ise o tarihi verecek şekilde revize edemedim. Yani işe başlaması gereken süre hafta içine denk geliyorsa aynı tarihte işe başlamalı, hafta sonuna denk geliyorsa bir sonraki ilk iş günü işe başlamalı. Yardımcı olacak arkadaşlara teşekkür ederim.
Kod:
İndirmek için giriş yapmanız gerekmektedir.
(7 satır)
 
Çözüm
Textbox6 ya tarih yazdınız, textbox6 dan çıkış yaparken, yazmış olduğunuz tarihe bakar; eğer cumartesi ise 2 ekleme yapar ve textbox7 üzerine ilk pazartesi gününü yazar. Pazar günü ise 1 ekler yine textbox7 üzerine o tarihi yazar. Textbox8 vs başka metin kutularıyla alakalı bi işlem yapmaz.

If Weekday(TextBox6) = 7 Then 'cumartesi ise +2 ekler
TextBox7 = Format(DateAdd("d", 2, TextBox6), "dd.mm.yyyy")
ElseIf Weekday(TextBox6) = 1 Then ' pazar ise +1 ekler
TextBox7 = Format(DateAdd("d", 1, TextBox6), "dd.mm.yyyy")
End If
Hangi textbox ne işe yarıyor? Hangi textbox un tarihi kontrol edilip hangi textbox un tarihi değiştirilecek?
Üstadım kod içerisinde açıklama yaptım, göremediniz sanırım.
'TextBox5: İzin Başlangıç tarihi
'TextBox6: İzin süresi (ay)
'TextBox7: İzin Bitiş tarihi
'TextBox8: İşe başlaması gereken gün
 
TEXTBOX6 dan çıkış yapıldığı esnada, textbox içindeki tarihi kontrol eder, textbox7 içerisine ilk pazartesinin tarihini yazar.
Ayrıca textbox6 dan çıkış yapıldığında textbox6 içeriği tarih değilse işlem yapmaz.
VBA:
İndirmek için giriş yapmanız gerekmektedir.
(7 satır)
 
TEXTBOX6 dan çıkış yapıldığı esnada, textbox içindeki tarihi kontrol eder, textbox7 içerisine ilk pazartesinin tarihini yazar.
Ayrıca textbox6 dan çıkış yapıldığında textbox6 içeriği tarih değilse işlem yapmaz.
VBA:
İndirmek için giriş yapmanız gerekmektedir.
(7 satır)
Üstadım kodlarda hiç bir tepkime olmadı. Nerede hata yapıyorum, çözemedim.
 

Ekli dosyalar

Dosya çok karışık, kodlarda öyle. Hangi textboxta hangi tepkiyi almak istiyorsanız textbox isimleri üzerinden maddeler halinde anlatabilirsiniz.
Kodun tepki vermeme ihtimali yok, nasıl çalıştığını dair açıklama yazmıştım.
 
Textbox6 ya tarih yazdınız, textbox6 dan çıkış yaparken, yazmış olduğunuz tarihe bakar; eğer cumartesi ise 2 ekleme yapar ve textbox7 üzerine ilk pazartesi gününü yazar. Pazar günü ise 1 ekler yine textbox7 üzerine o tarihi yazar. Textbox8 vs başka metin kutularıyla alakalı bi işlem yapmaz.

If Weekday(TextBox6) = 7 Then 'cumartesi ise +2 ekler
TextBox7 = Format(DateAdd("d", 2, TextBox6), "dd.mm.yyyy")
ElseIf Weekday(TextBox6) = 1 Then ' pazar ise +1 ekler
TextBox7 = Format(DateAdd("d", 1, TextBox6), "dd.mm.yyyy")
End If
 
Çözüm
Textbox6 ya tarih yazdınız, textbox6 dan çıkış yaparken, yazmış olduğunuz tarihe bakar; eğer cumartesi ise 2 ekleme yapar ve textbox7 üzerine ilk pazartesi gününü yazar. Pazar günü ise 1 ekler yine textbox7 üzerine o tarihi yazar. Textbox8 vs başka metin kutularıyla alakalı bi işlem yapmaz.

If Weekday(TextBox6) = 7 Then 'cumartesi ise +2 ekler
TextBox7 = Format(DateAdd("d", 2, TextBox6), "dd.mm.yyyy")
ElseIf Weekday(TextBox6) = 1 Then ' pazar ise +1 ekler
TextBox7 = Format(DateAdd("d", 1, TextBox6), "dd.mm.yyyy")
End If
Üstadım textbox5’e izin başlangıç tarihini yazıyorum. Textbox6’ya kullanılacak izin süresini gün veya ay olarak yazıyorum. Textbox6’nın exit olayında text5 ve text6’yı toplayarak izin bitiş süresini text7’ye yazıyorum. Text7 deki tarih hafta içi ise aynı tarihi değilse hafta sonuna denk gelmişse bir sonraki ilk iş gününü text8’e yazıyor.
 
Verdiğim kodda textbox6 yazan yerleri textbox7 olarak değiştirin; textbox7 yazan yerleri textbox8 olarak değiştirin.
Birde kodu textbox7 change olayının içine eklerseniz istediğiniz olacaktır.
 
Verdiğim kodda textbox6 yazan yerleri textbox7 olarak değiştirin; textbox7 yazan yerleri textbox8 olarak değiştirin.
Birde kodu textbox7 change olayının içine eklerseniz istediğiniz olacaktır.
Maalesef üstat.
Örnek çalışmada kişi
2 Ocak 2023 tarihinde 5 gün izin alıyor.
İzin bitiş tarihi 7 Ocak 2023 Cumartesi gününe denk geldiği için
işe başlama tarihi 9 ocak pazartesi günü oluyor. Burada sorun yok.
2 Ocak tarihinde 8 gün izin alırsa, izin bitiş tarihi 10 Ocak 2023 Salı günü oluyor.
İşe başlama tarihi de 10 Ocak 2023 Salı günü olmalı. Sorunumuz budur. Mevcut kod 1 gün sonrasını işe başlama tarihi olarak hesaplıyor.
SQL_SORGU.webp
 
Textbox6 ya tarih yazdınız, textbox6 dan çıkış yaparken, yazmış olduğunuz tarihe bakar; eğer cumartesi ise 2 ekleme yapar ve textbox7 üzerine ilk pazartesi gününü yazar. Pazar günü ise 1 ekler yine textbox7 üzerine o tarihi yazar. Textbox8 vs başka metin kutularıyla alakalı bi işlem yapmaz.

If Weekday(TextBox6) = 7 Then 'cumartesi ise +2 ekler
TextBox7 = Format(DateAdd("d", 2, TextBox6), "dd.mm.yyyy")
ElseIf Weekday(TextBox6) = 1 Then ' pazar ise +1 ekler
TextBox7 = Format(DateAdd("d", 1, TextBox6), "dd.mm.yyyy")
End If
Teşekkür ederim, kod'a şu ilave ile sonuca ulaştım.
Kod:
İndirmek için giriş yapmanız gerekmektedir.
(15 satır)
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Benzer Konular Popüler İçerikler Daha Fazlası
Geri
Üst Alt