• DİKKAT

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

herseyi yazdim kod bir sure calisip sonrada hata veriyor neden acaba ?

Katılım
31 Mart 2010
Mesajlar
184
Excel Vers. ve Dili
excel 2010/2013
Herseyi yazdim ancak bir sure calisiyor sonrada out of range hatasi veriyor neden olabilir ?
 
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.
 
Problem ektedir, hersey yazdım , ama çalışmıyor yanlız çalışırsa en az 360*5 tane problem üretecek bunun için az çalıştırın . şimdiden uyarmak istedim.



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.
 

Ekli dosyalar

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
 
Yok debug yaparsanız nasıl çalıştıgını anlarsınız , makro kendısı sayfalar arasında geçiş yapıyor zaten debugda sorun surada çıkıyor



For k = 17 To sonsat - 1 Step 4

sayi = sayi + 1
ActiveCell.Offset(sayi, 2) = WorksheetFunction.Sum(Range("D" & k & ":D" & k + 3))
totaldemand(sayi) = ActiveCell.Offset(sayi, 2).Value
Next


Aslında 2. sayfadakı degerleri alıp diğer sayfada sıralıyr ve bu kısımda sanırım WorksheetFunction.Sum kısmında bir hata verıyor aralık dışında dıyor , acaba her kombınasyon için burası calışmıyor mu? bunu nasıl duzenlerim ?




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
 
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.
 
Omer bey bunu kod olarak yazabilir misiniz buraya kisaca nasil yazilir ?
 
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]
 
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.

Ö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
 
Ö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.
 
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.

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.
 
Dediğiniz gibi değiştirdim ancak yine aynı hatayı verdi .



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]
 
Siz bu konuda ne diyorsunuz ? Hocamınız dediğini denedim ancak yine aynı hatayı verdi.


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.
 
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),
ama konu sahibinin sonsat-1 tanımlamasında sorun var.
Artık satır sayısı 1 olduğunda son satırın toplamı alınmamış oluyor.
Veriler 17'nci satırdan başlıyor ve örneğin son dolu satır 25'nci satır ise, son satırdaki sayının toplamı alınmamış oluyor.

For k = 17 To sonsat - 1 Step 4

sayi = sayi + 1
ActiveCell.Offset(sayi, 2) = WorksheetFunction.Sum(Range("D" & k & ":D" & k + 3))
totaldemand(sayi) = ActiveCell.Offset(sayi, 2).Value
Next
 
Eger sonsatır olarak alsaydım , dizi toplama yapıyor en sonra " 0 " değerini yazıyordu bende "0" olmasın diye döngüyü sonsatır-1 olarak ifade ettim .
 
duzenleme yaptım sizin dediğiniz gibi, bu seferde son satırsakı kodda

For i = 1 To NumPeriod

Selection.End(xlDown).Select
ActiveCell.Offset(2, 0).Select (hata burada verıyor)
ActiveCell.Value = "Diot_Level(" & i & ")"

For j = 1 To ReturnProdNum(i)
For k = 1 To Numcomponent
formül = "=BİNOM.TERS(10;" & DiotLevel & ";" & Rnd & ")"
ActiveCell.Offset(j, k - 1).FormulaLocal = formül
Next
Next
Next

Application defined- object defined error hatası verıyor
 
Çözüm için fikrim yok maalesef. :(
 
Geri
Üst