gun = (CDate(txtBitisTarihi) - CDate(txtBaslangicTarihi))
satırı dolayısıyla gun ADETi başlangıç ve bitiş tarihleri HARİÇ olarak tespit edilmiş oluyor gibi görünse de
hemen altındaki For ... Next döngüsü 0'dan başlatıldığından başlangıç tarihinin günü de hafta içi/hafta sonu kontrolüne tabi tutulmuş oluyor.
Daha üstte cbhafta diye bir değişken kullanılmış ama bunun ne olduğuna dair, kodun üst tarafında bir belirleme/hesaplama göremedim, belki de bir önceki aşamada açık olan bir userform kodlarıyla tespit ediliyordur (bilemiyorum tabi).
Gördüğüm bir sıkıntı da For i = 0 To gun döngüsünde If k <> hftgn kısmı bence sorunlu. Çünkü k değişkeni bir önceki For...Next döngüsünden kalma bir değişken ve o döngü tamamlandığında "k" değeri hep 8 olur gibi görüyorum (oysa en fazla 7 olmalı)
Önce, kullandığınız userformların ShowModal özelliklerini FALSE yapın.
Ardından, verdiğiniz kodun içindeki ilk satıra bir DURAK ekleyin (VBA ekranında imleci ilk kod satırına getirin ve F9 tuşuna basın),
sonra da userformu açarak hesaplama aşamasına gelin. VBA ekranı açık kalsın.
Kod çalıştığında, F9 yapılan satırda duracak. O aşamadan sonra kodu F8 tuşuna aralıklara basarak adım adım çalıştırın ve her satır değişiminde,
fareyle SARI (kod satırlarının sarı zeminli hale geldiğini göreceksiniz zaten) renkli satırın üstünde kalan satırlardaki değişken adlarının üstüne giderek hesaplanan değerleri görebilirsiniz. Bu şekilde kodu adım adım çalıştırıp kontroller yapın bakalım.
Belirttiğim gibi belgenizi açmadım/bakmadım.