• DİKKAT

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

kontrol hatası

musculus2

Altın Üye
Altın Üye
Katılım
23 Şubat 2007
Mesajlar
112
Excel Vers. ve Dili
2010 türkçe
200 üzerindeki üye için dernek makrosu yazmaya çalışıyorum.Program açılışta tüm üye bilgilerini listbox1 e getiryor.Listbox1 deki herhangi bir isim tıklandığında isim textbox1 getiriliyor.Ve textbox1 deki ismi, 2015_ödeme sayfasında bankadan gelen listede bularak sayfa 1 de uygun olan aylara yazıyor.daha sonra boş olan aylarada ödenmedi diyerek borç hesaplatıyorum.

Benim sorunum
Raziye Kır 11 ay ödeme yaptığı halde sadece 1 ay ödeme yapmış gibi gösteriyor.

If (StrConv(Range("e" & suz), vbUpperCase) Like StrConv("*" & TextBox1 & "*", vbUpperCase)) Then

listede sadece 12 ayı görmüş diğerlerini görmemiş.kişinin sadece ocak ayına ait borcu çıkması gerekirken 2-11 aylarada borç çıkmış.tüm üyelerin olduğu listede bazı üyeler 12 ay ödeme yapmış olduğu halde 3-4 ayı ödeme yapmamış gibi gösteriyor.2015_ödeme sayfasını metin yaptım sorunum çözülmedi.Daha doğrusu sorunun kaynağını bile bulamadım.
Yardımlarınız için teşekkür ederim.
 

Ekli dosyalar

kişinin toplam borcu 160 TL mi?

Listbox1_Click olayında aşağıdaki KIRMIZI kodu düzeltiniz.
Kod:
  If (Year(Range("b" & suz)) >= kontyıl And Year(Range("b" & suz)) <= Year(Now)) Then
        If Month(Range("b" & suz)) [COLOR="Red"][B]<[/B][/COLOR]= kontay Then

ilave:
Ödeme bilgilerini her yıl için ayrı ayrı sayfa yapmak yerine bir tane ödeme_listesi sayfası altında saklasanız?
 
Son düzenleme:
İlginiz için teşekkür ederim.Malesef sorunum çözülmedi.Örnek dosyada dediğiniz değişiklikleri yaptım.Sorun çözülmüş gibi gözüktü.Değişikliği ana dosyaya uyguladığımda yine tam hesaplanmayan kişiler çıktı.bende örnek dosyaya bir kişi daha ekledim.Fikret Bol isimli kişi 3-4-5-6-7-8-9-10-11 ve 12 aylar aidatını ödediği halde sadece 3-4-5 ve 6. ay ödemi gibi gözüküyor.Benim anlamadığım hiç hesaplamasa anlıyacağım ama yarısını bulup yarısını bulmayınca sorunuda anlayamıyorum.
 

Ekli dosyalar

Malesef sorun çözülmemiş.Emeğinize teşekkür ediyorum.

2015_ödeme_Listesi sayfasına bakarsanız Fikret Bol'un 3-4-5-5-6-7-8-9-10-11 ve 12 aylar ödeme yaptığını görüyoruz.Bu ödemeleri Sayfa 1'e aktardığımızda sadece 3-4-5 ve 6 aylar ödeme yapılmış 7-8-9-10-11 ve 12 aylar ödeme yapılmamış gibi aktarıyor.Nasıl böyle bir sorun olabilir anlayamıyorum.
 
2015_Ödeme_Listesi sayfasında başlık bilginiz yok :) bundan dolayı da hata veriyor.
Örnek dosyayı inceleyiniz.
bazı yerlerde hata bıraktım sizin yapmanız için kodları kontrol ediniz.
 

Ekli dosyalar

Son düzenleme:
Orjinalinde vardı o yüzden döngüyü 2 den başlatmıştım.Ama sorunun kaynağını buldum galiba

If Month(Range("b" & Suz)) <= kontay Then

burada yapmak istediğim kişinin üyelik tarihini esas alarak bu tarihten öncesine borç çıkarmaması idi.Bunun için üyelik yılını kontyıl değişkenine üyelik ayınıda kontay değişkenine atayıp yılı
If (Year(Range("b" & Suz)) >= kontyıl And Year(Range("b" & Suz)) <= Year(Now)) Then

ile uygun yıl aralığında seçtikten sonra

If Month(Range("b" & Suz)) <= kontay Then
ile ayı kontrol etmek çok kötü bir hata oldu.Üye tarihinden sonraki ayları hesaplamıyor böylece.
Şİmdi karar vermem gereken bunu nasıl çözeceğim ya da başka bir yol bulmam.Öneriniz nedir ?
 
kodlarınızı elden geçirdim kontrol ediniz. #6 nolu mesaj.
 
Mükememel çalışıyor.Yardım,emeğiniz ve bilgilerimin artışını sağladığınız için çok teşekkür ederim.
 
ktrlSonucu = tmpStr1 Like tmpStr2
If (ktrlSonucu) Then

burayı kısaca açıklayabilirmisiniz ?
 
sizin aşağıda uzun olarak yazdığınız satırı bölmek için kullandım. VBA editörde hata olan yerlere breakpoint koyup o anki değerleri görebiliyorsunuz. sizin yaptığız yöntemle çok uzun bir ifade oluyor ve hepsini tek tek kontrol etmek zorlaşıyor. ben bu uzun ifadeyi parçalara ayırıp her birini adım adım çalıştırıp hatanın nerede olduğunu görüyorum

Kod:
If (StrConv(Range("e" & suz), vbUpperCase) Like StrConv("*" & TextBox1 & "*", vbUpperCase)) Then

Kod:
tmpStr1 = StrConv(Range("E" & suz), vbUpperCase)           'E sütunundaki isim bilgisi
tmpStr2 = StrConv("*" & TextBox1.Text & "*", vbUpperCase)  'Textboxta yazan kullanıcı adı
ktrlSonucu = tmpStr1 Like tmpStr2                          'ikisinin karşılaştırması
If (ktrlSonucu) Then
 
Son düzenleme:
Teşekkür ederim. :)
 
Geri
Üst