• DİKKAT

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

For Next döngüsü

Katılım
8 Haziran 2007
Mesajlar
401
Excel Vers. ve Dili
excel fonksiyonlar
Forumda emeği geçen herkese merhaba . Arkadaşlar aşağıdaki kodlarda nasıl bir hata var ki ben bir türlü next a yı göremiyorum. 2. Satıra yazıp bırakıyor.

Range("E2:E20").ClearContents
j = [B2].End(3).Row + 1

If j < 2 Then j = 2


Dim a As Integer


For a = 1 To 10

If Cells(j, 2) >= 60 Then
Cells(j, 4) = "GEÇTİ"
Else
Cells(j, 4) = "KALDI"
End If

If Cells(j, 2) + Cells(j, 3) >= 100 Then
Cells(j, 5) = "TAKDİR"
Else
Cells(j, 5) = "BELGE YOK"
End If

Next a
 

Ekli dosyalar

Son düzenleme:
Merhaba,

Sadece kod göndermeniz işi oldukça zorlaştırıyor. Oysa örnek dosyanızı da göndermiş olsanız anlaşılması daha kolay olurdu.

Şöyle bir baktığımda j değeri neyse 10 kere aynı değeri kontrol ediyorsunuz.

Döngüde a değerini 1 den 10 a kadar yaptırıyorsunuz fakat döngü içinde hücre satır değerini hep j den alıyorsunuz.
 
merhaba örnek olmadan cevap vermek zor ama bana kalırsa hatalı satır j = [B2].End(3).Row + 1 gibi görünüyor sondaki +1 i silip denermisiniz?
 
Merhaba,

Sadece kod göndermeniz işi oldukça zorlaştırıyor. Oysa örnek dosyanızı da göndermiş olsanız anlaşılması daha kolay olurdu.

Şöyle bir baktığımda j değeri neyse 10 kere aynı değeri kontrol ediyorsunuz.

Döngüde a değerini 1 den 10 a kadar yaptırıyorsunuz fakat döngü içinde hücre satır değerini hep j den alıyorsunuz.

Hocam özür dilerim. Konunun basit olduğunu düşündüm ve forumu ekonomik kullanmak amacıyla dosya eklememiştim. Aynı mesaja ekledim. İlginiz için teşekkürler. :)
 
merhaba

bu şekilde deneyiniz.
Kod:
Sub FOR_NEXT_DENEME()
j = [B65536].End(3).Row
Range("D2:E" & j).ClearContents
For a = 2 To j
If Cells(a, 2).Value >= 60 Then
Cells(a, 4) = "GEÇTİ"
Else
Cells(a, 4) = "KALDI"
End If
If Cells(a, 2).Value + Cells(a, 3).Value >= 100 Then
Cells(a, 5) = "TAKDİR"
Else
Cells(a, 5) = "BELGE YOK"
End If
Next a
End Sub
 
merhaba

bu şekilde deneyiniz.
Kod:
Sub FOR_NEXT_DENEME()
j = [B65536].End(3).Row
Range("D2:E" & j).ClearContents
For a = 2 To j
If Cells(a, 2).Value >= 60 Then
Cells(a, 4) = "GEÇTİ"
Else
Cells(a, 4) = "KALDI"
End If
If Cells(a, 2).Value + Cells(a, 3).Value >= 100 Then
Cells(a, 5) = "TAKDİR"
Else
Cells(a, 5) = "BELGE YOK"
End If
Next a
End Sub

Uzman hocam emeğinize sağlık. Konu kavranmıştır. Şimdi sıra bu kodları daha fazla sütunda denemeye kaldı. Çok çok teşekkürler. :) Hocam yeri gelmişken bir soru daha sormak istiyorum. Bizim şart yapımız üçlü seçenekte olsa nasıl olacaktı. Şöyle örnekleyelim. 0-50 arası başarısız. 51-80 arası Başarılı , 81-100 arası çok başarılı. Bunu nasıl yazabiliriz.
 
Merhaba, Uzmanım Amelem hızla davranmış :)

Bende şöyle yapmış idim, boşa gitmesin :)

Kod:
Sub Sonuc()
    Dim i   As Long, _
        Son As Long
    
    Son = Cells(Rows.Count, "A").End(3).Row 'Son Satırı Belirledik
    Range("D2:E" & Son).ClearContents       'D ve E satırlarının içeriğini sildik
    For i = 2 To Son                        '2. satırdan son satıra kadar döngüyü kurduk
        
        If Cells(i, "B") < 60 Then          'Özellikle < seçtim ki iki ayrı işaret kullanmayım
            Cells(i, "D") = "Kaldı"
        Else
            Cells(i, "D") = "Geçti"
        End If
        
        If Cells(i, "B") + Cells(i, "C") < 100 Then
            Cells(i, "E") = "Belge Yok"
        Else
            Cells(i, "E") = "Takdir"
        End If
    Next i
    
End Sub
 
Merhaba, Uzmanım Amelem hızla davranmış :)

Bende şöyle yapmış idim, boşa gitmesin :)

Kod:
Sub Sonuc()
    Dim i   As Long, _
        Son As Long
    
    Son = Cells(Rows.Count, "A").End(3).Row 'Son Satırı Belirledik
    Range("D2:E" & Son).ClearContents       'D ve E satırlarının içeriğini sildik
    For i = 2 To Son                        '2. satırdan son satıra kadar döngüyü kurduk
        
        If Cells(i, "B") < 60 Then          'Özellikle < seçtim ki iki ayrı işaret kullanmayım
            Cells(i, "D") = "Kaldı"
        Else
            Cells(i, "D") = "Geçti"
        End If
        
        If Cells(i, "B") + Cells(i, "C") < 100 Then
            Cells(i, "E") = "Belge Yok"
        Else
            Cells(i, "E") = "Takdir"
        End If
    Next i
    
End Sub

Necdet hocam ilginize ve emeğinize çok teşekkür ederim. Bu koları da alternatif olarak başka bir modüle yazdım. Ancak bu ıf yapısının üç koşullusunu halledebilirsek iyice doluya gelecek. :) Uzman hocama sormuş olduğum soruyu size de sormuş olayım. :) Sağlıcakla kalın.
 
Merhaba,

Kod:
Sub Sonuc()
Dim i As Long, _
Son As Long
 
Son = Cells(Rows.Count, "A").End(3).Row 'Son Satırı Belirledik
Range("D2:E" & Son).ClearContents 'D ve E satırlarının içeriğini sildik
For i = 2 To Son '2. satırdan son satıra kadar döngüyü kurduk
 
If Cells(i, "B") < 51 Then 'Özellikle < seçtim ki iki ayrı işaret kullanmayım
Cells(i, "D") = "Başarısız"
ElseIf Cells(i, "B") < 81 Then
Cells(i, "D") = "Başarılı"
Else
Cells(i, "D") = "Çok Başarılı"
End If
 
If Cells(i, "B") + Cells(i, "C") < 100 Then
Cells(i, "E") = "Belge Yok"
Else
Cells(i, "E") = "Takdir"
End If
Next i
 
End Sub
 
Merhaba,

Kod:
Sub Sonuc()
Dim i As Long, _
Son As Long
 
Son = Cells(Rows.Count, "A").End(3).Row 'Son Satırı Belirledik
Range("D2:E" & Son).ClearContents 'D ve E satırlarının içeriğini sildik
For i = 2 To Son '2. satırdan son satıra kadar döngüyü kurduk
 
If Cells(i, "B") < 51 Then 'Özellikle < seçtim ki iki ayrı işaret kullanmayım
Cells(i, "D") = "Başarısız"
ElseIf Cells(i, "B") < 81 Then
Cells(i, "D") = "Başarılı"
Else
Cells(i, "D") = "Çok Başarılı"
End If
 
If Cells(i, "B") + Cells(i, "C") < 100 Then
Cells(i, "E") = "Belge Yok"
Else
Cells(i, "E") = "Takdir"
End If
Next i
 
End Sub

Necdet hocam emeğinize sağlık. Çok teşekkür ederim. Ben kafayı yanlış yere takmışım. Sabahtan beri iki değer arasında nasıl yazılır diye kafa patlatıyordum. Sırayla hepsini kontrol ediyor iş bitiyor. Pek makbule geçti. Tekrar teşekkürler. :)
 
Necdet hocam emeğinize sağlık. Çok teşekkür ederim. Ben kafayı yanlış yere takmışım. Sabahtan beri iki değer arasında nasıl yazılır diye kafa patlatıyordum. Sırayla hepsini kontrol ediyor iş bitiyor. Pek makbule geçti. Tekrar teşekkürler. :)


Güle güle kullanınız.
 
Geri
Üst