DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Herseyi yazdim ancak bir sure calisiyor sonrada out of range hatasi veriyor neden olabilir ?
Sorunun cevabını verebilmek için müneccim olmak lazım herhalde. Ne yazdığınızı, Dosya yapınızı, ve Kullandığınız kodları bilmeden cevap vermek çok zor. Onun için dosyanızı ekleyip (genelde) sorununuzu üzerinde belirtiniz.
Worksheets("[COLOR="Red"][B]Sayfa2[/B][/COLOR]").Activate
kodlar hangi sayfada çalışacaksa sayfa tanımlamalarını ona göre yaparsanız sorun yok gibi.
Kırmızılı yeri mevcut sayfaya göre yazın ,mesela "ProblemForming" gibi
Kod:Worksheets("[COLOR="Red"][B]Sayfa2[/B][/COLOR]").Activate
If sonsat Mod 4 <> 0 Then
[COLOR="Red"]ilave[/COLOR] = 4 - (sonsat Mod 4)
End If
[COLOR="blue"]sondeğer[/COLOR] = sonsat + [COLOR="red"]ilave[/COLOR]
[COLOR="Blue"][B]For k = 17 To sondeğer Step 4[/B][/COLOR]
Merhaba.
k sayısı 17'den sonsat-1'e kadar 4'er satır atlayarak 17, 21, 25, ..... şeklinde gideceğine göre;
sonsat-1 sayısının bu kurala göre 4'er atlayarak bulunacak bir sayı olması gerekmez mi acaba?
Kanaatim o ki sorun burada.
Örneğin diyelim ki son satırınız 23'ncüncü satır, bu durumda for-next döngüsü
-- 17'den sonraki ilk adımda 21 değerini alacak,
-- ikinci adımda ise 25 olması gerekecek
ama sonsat-1 ->22 bu durumda 21'den sonra 25 değerini alamayacak.
Çözüm için sonsat-13-MOD(sonsat-1;4) gibi bir işlemle; For - Next döngüsünün son değeri,
4'ün katı olacak şekilde yazılmalıdır.
Sub deneme()
For i = 5 To 18 Step 3
Cells(i, "E") = "Excel"
Next
End Sub
Merhaba Yusuf Bey, denemiş değilim, öyle diyorsanız mutlaka öyledir.Ömer Bey, bildiğim kadarıyla for next döngüsünde son adımın illa belirlenen kat olması gerekmiyor. Verdiğiniz örnekte önce 17'yi, sonra 21'i işler ve artık tüm adımlar tamamlandığından döngüyü sonlandırır. Bunu şu basit kodla görebilirsiniz:
Kod:Sub deneme() For i = 5 To 18 Step 3 Cells(i, "E") = "Excel" Next End Sub
Merhaba Yusuf Bey, denemiş değilim, öyle diyorsanız mutlaka öyledir.
Kodlar konusundaki durumumun HİÇ+1 seviyesinde olduğunun farkındayım ama konu sahibinin koddan beklediği şey;
TOPLAM alma işlemi olduğuna ve toplanan sayılar da k sayısı ile k+3 sayısı (satır numaraları) arasındaki değerler olduğuna göre son değer, 4'ün katı olmazsa sondaki ARTIK SATIRLARın toplamı alınmaz gibi geliyor bana.
Tekrar merhaba.
For satırı yerine (aşağıdaki son satır For satırı zaten) aşağıdaki satırları ekleyince olması lazım;Kod:If sonsat Mod 4 <> 0 Then [COLOR="Red"]ilave[/COLOR] = 4 - (sonsat Mod 4) End If [COLOR="blue"]sondeğer[/COLOR] = sonsat + [COLOR="red"]ilave[/COLOR] [COLOR="Blue"][B]For k = 17 To sondeğer Step 4[/B][/COLOR]
sonsat'ın 23 olduğunu kabul edelim. Bu durumda k sırayla 17 ve 21 değerini alır. 17 olduğunda formül topla(D17: D20) ve 21 olduğunda da topla(D21: D24) olur.
Belirttiğiniz durum olması için sonsat'ın excel'in son satırı civarında olması gerekir, xls için yaklaşık 65536, xlsx için 1 milyon küsür.
Tabi bu benim naçizane düşüncem, belki de yanlış biliyorumdur.
Evet haklısınız Yusuf Bey, toplama alanı k:k+3 şeklinde kodlanmış (denedim),sonsat'ın 23 olduğunu kabul edelim. Bu durumda k sırayla 17 ve 21 değerini alır. 17 olduğunda formül topla(D17: D20) ve 21 olduğunda da topla(D21: D24) olur.
Belirttiğiniz durum olması için sonsat'ın excel'in son satırı civarında olması gerekir, xls için yaklaşık 65536, xlsx için 1 milyon küsür.
Tabi bu benim naçizane düşüncem, belki de yanlış biliyorumdur.
For k = 17 To sonsat - 1 Step 4
sayi = sayi + 1
ActiveCell.Offset(sayi, 2) = WorksheetFunction.Sum(Range("D" & k & "" & k + 3))
totaldemand(sayi) = ActiveCell.Offset(sayi, 2).Value
Next