• DİKKAT

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

Uzun Kod Hatası

ccuneyt13

Altın Üye
Katılım
20 Ocak 2011
Mesajlar
478
Excel Vers. ve Dili
Office 365 Türkçe (64 bit)
If y = "2011/08" Or y = "2011/07" Or y = "2011/06" Or y = "2011/05" Or y = "2011/04" Or y = "2011/03" Or y = "2009/01" Or Range("E" & i).Value = "2009/02" Or Range("E" & i).Value = "2009/03" Or Range("E" & i).Value = "2009/04" Or Range("E" & i).Value = "2009/05" Or Range("E" & i).Value = "2009/06" Or Range("E" & i).Value = "2009/07" Or Range("E" & i).Value = "2009/08" Or Range("E" & i).Value = "2009/09" Or Range("E" & i).Value = "2009/10" Or Range("E" & i).Value = "2009/11" Or Range("E" & i).Value = "2009/12" Or Range("E" & i).Value = "2010/01" Or Range("E" & i).Value = "2010/02" Or Range("E" & i).Value = "2010/03" Or Range("E" & i).Value = "2010/04" Or Range("E" & i).Value = "2010/05" Or Range("E" & i).Value = "2010/06" Or Range("E" & i).Value = "2010/07" Or Range("E" & i).Value = "2010/08" Or Range("E" & i).Value = "2010/09" Or Range("E" & i).Value = "2010/10" Or Range("E" & i).Value = "2010/11" Or Range("E" & i).Value = "2010/12" Or Range("E" & i).Value = "2011/01" Or Range("E" & i).Value = "2011/02"


kullanmakta olduğum makronun bir satırında yukarıdaki gibi bir kod var 2009/01 den 2011/08 e kadar girilmiş durumda fakat benim buna 2011/09 ve 2011/10 olarak ekleme yapmam gerekli ama bu satıra geldiğimde bişi yazmama müsade etmiyor. sanırım çok uzun olduğu için. Tek satırda yazılı bu kod bu arada. sizden ricam bu tek satırda uzunca olan kodu nasıl uzatabilirim aşada yazılı olanları bozmadan.
 
Bu kodu denermisiniz.

Kod:
Dim say(50)

say(1) = "2011/08"
say(2) = "2011/07"
say(3) = "2011/06"
say(4) = "2011/05"
say(5) = "2011/04"
say(6) = "2011/03"
say(7) = "2009/01"
say(8) = "2009/02"
say(9) = "2009/03"
say(10) = "2009/04"
say(11) = "2009/05"
say(12) = "2009/06"
say(13) = "2009/07"
say(14) = "2009/08"
say(15) = "2009/09"
say(16) = "2009/10"
say(17) = "2009/11"
say(18) = "2009/12"
say(19) = "2010/01"
say(20) = "2010/02"
say(21) = "2010/03"
say(22) = "2010/04"
say(23) = "2010/05"
say(24) = "2010/06"
say(25) = "2010/07"
say(26) = "2010/08"
say(27) = "2010/09"
say(28) = "2010/10"
say(29) = "2010/11"
say(30) = "2010/12"
say(31) = "2011/01"
say(32) = "2011/02"
say(33) = "2011/09" 'ekledim
say(34) = "2011/10" 'ekledim
'buraya eklemelerinizi yazın
 

For i = 1 To 50
If y = say(i) Or Range("E" & i).Value = say(i) Then
'buraya kodlarınızı yazın
Exit For
End If
nexti
 
halit bey öncelikle uzun süredir giremediğimden dolayı cevabınıza teşekkür etme fırsatı bulamamıştım özür dileyerek teşekkür ederim. Dediğinizi uygulamaya çalıştım fakat başarılı olamadım. Ek'te yolladığım dosyada 15 gurup için var olan makronun problemli olan 13 ve 14. cü grupların bölümünü içerir şekilde yolluyorum. Burada Sorunum If y = "2011/09" Or Range("E" & i).Value = "2011/08" Or y = "2011/07" Or y = "... diye devam eden en uzun olan satıra en fazla 5 karakter daha eklememe müsade ediyor. yani çok fazla kodlardan falan anlamıyorum sadece mevcut makroyu her ay güncelleye biliyordum ama bu ay oraya daha fazla bişi yazmama engel oluyor. yani o uzun satırının sonuna başına virgül noktalı virgül artık ne gerekiyorsa bişi koyup altına devam etmemi sağlayacak bi yol söyleyebilirseniz minnettar olurum.
 

Ekli dosyalar

halit bey öncelikle uzun süredir giremediğimden dolayı cevabınıza teşekkür etme fırsatı bulamamıştım özür dileyerek teşekkür ederim. Dediğinizi uygulamaya çalıştım fakat başarılı olamadım. Ek'te yolladığım dosyada 15 gurup için var olan makronun problemli olan 13 ve 14. cü grupların bölümünü içerir şekilde yolluyorum. Burada Sorunum If y = "2011/09" Or Range("E" & i).Value = "2011/08" Or y = "2011/07" Or y = "... diye devam eden en uzun olan satıra en fazla 5 karakter daha eklememe müsade ediyor. yani çok fazla kodlardan falan anlamıyorum sadece mevcut makroyu her ay güncelleye biliyordum ama bu ay oraya daha fazla bişi yazmama engel oluyor. yani o uzun satırının sonuna başına virgül noktalı virgül artık ne gerekiyorsa bişi koyup altına devam etmemi sağlayacak bi yol söyleyebilirseniz minnettar olurum.

Tam 20 gün olmuş ben konuyu unuttum genelde geri dönüş yapmıyanlara ben cevap vermiyorum.
diğer taraftan dosyanızda hiç bir şey yok kodlarınızında ne başı var nede sonu fazla yazışmaya mehal vermemek için örnek dosyanızdaki bilgiler hayali olup ve gerçek dosyanızla bire bir aynı olmasına özen gösterin.

kod:

Kod:
' 13 GRUBUNUN AYRIMI
Sheets("13").Select
Range("P1").Value = "ALACAKLI"
Dim say(50)
say(1) = "2011/08"
say(2) = "2011/07"
say(3) = "2011/06"
say(4) = "2011/05"
say(5) = "2011/04"
say(6) = "2011/03"
say(7) = "2009/01"
say(8) = "2009/02"
say(9) = "2009/03"
say(10) = "2009/04"
say(11) = "2009/05"
say(12) = "2009/06"
say(13) = "2009/07"
say(14) = "2009/08"
say(15) = "2009/09"
say(16) = "2009/10"
say(17) = "2009/11"
say(18) = "2009/12"
say(19) = "2010/01"
say(20) = "2010/02"
say(21) = "2010/03"
say(22) = "2010/04"
say(23) = "2010/05"
say(24) = "2010/06"
say(25) = "2010/07"
say(26) = "2010/08"
say(27) = "2010/09"
say(28) = "2010/10"
say(29) = "2010/11"
say(30) = "2010/12"
say(31) = "2011/01"
say(32) = "2011/02"
say(33) = "2011/09" 'ekledim
say(34) = "2011/10" 'ekledim
'buraya eklemelerinizi yazın
 
For i = 1 To 100000
x = Range("L" & i).Value
y = Range("E" & i).Value
If Range("L" & i).Value = "" Then
Exit For
End If
If x = "11300" Or x = "11310" Or x = "11320" Or x = "21310" Or x = "31310" Or x = "41310" Or x = "51300" Or x = "51310" Or x = "51380" Or x = "61310" Then

deg1 = 0
For j = 1 To 50
If y = say(j) Or Range("E" & i).Value = say(j) Then
deg1 = 1
Exit For
End If
Next j
'If y = "2011/09" Or Range("E" & i).Value = "2011/08" Or y = "2011/07" Or y = "2011/06" Or y = "2011/05" Or y = "2011/04" Or y = "2011/03" Or y = "2009/01" Or y = "2009/02" Or y = "2009/03" Or y = "2009/04" Or Range("E" & i).Value = "2009/05" Or Range("E" & i).Value = "2009/06" Or Range("E" & i).Value = "2009/07" Or Range("E" & i).Value = "2009/08" Or Range("E" & i).Value = "2009/09" Or Range("E" & i).Value = "2009/10" Or Range("E" & i).Value = "2009/11" Or Range("E" & i).Value = "2009/12" Or Range("E" & i).Value = "2010/01" Or Range("E" & i).Value = "2010/02" Or Range("E" & i).Value = "2010/03" Or Range("E" & i).Value = "2010/04" Or Range("E" & i).Value = "2010/05" Or Range("E" & i).Value = "2010/06" Or Range("E" & i).Value = "2010/07" Or Range("E" & i).Value = "2010/08" Or Range("E" & i).Value = "2010/09" Or Range("E" & i).Value = "2010/10" Or Range("E" & i).Value = "2010/11" Or Range("E" & i).Value = "2010/12" Or Range("E" & i).Value = "2011/01" Or Range("E" & i).Value = "2011/02" Then
If deg1 = 1 Then
Range("P" & i).Value = "OE"
Else
Range("P" & i).Value = "TE"
End If
 
Else
Range("P" & i).Value = "OE"
End If
If Range("L" & i).Value = "Tarife Kodu" Then
Range("P" & i).Value = "ALACAKLI"
Range("Q" & i).Value = "AÇIKLAMA"
End If
If Range("H" & i).Value > 1000 Then
Range("Q" & i).Value = "1000 TL ÜST"
End If
If Range("H" & i).Value < 30 Then
Range("Q" & i).Value = "30 TL ALT"
End If
Next
' 14 GRUBUNUN AYRIMI
Sheets("14").Select
Range("P1").Value = "ALACAKLI"
For i = 1 To 100000

x = Range("L" & i).Value
y = Range("E" & i).Value
If Range("L" & i).Value = "" Then
Exit For
End If
If x = "11410" Or x = "11420" Or x = "11430" Or x = "11440" Or x = "11450" Or x = "11460" Or x = "11480" Or x = "21410" Or x = "41410" Or x = "61410" Or x = "61460" Or x = "61420" Then
'If y = "2011/09" Or Range("E" & i).Value = "2011/08" Or y = "2011/07" Or y = "2011/06" Or y = "2011/05" Or y = "2011/04" Or y = "2011/03" Or y = "2009/01" Or y = "2009/02" Or y = "2009/03" Or y = "2009/04" Or Range("E" & i).Value = "2009/05" Or Range("E" & i).Value = "2009/06" Or Range("E" & i).Value = "2009/07" Or Range("E" & i).Value = "2009/08" Or Range("E" & i).Value = "2009/09" Or Range("E" & i).Value = "2009/10" Or Range("E" & i).Value = "2009/11" Or Range("E" & i).Value = "2009/12" Or Range("E" & i).Value = "2010/01" Or Range("E" & i).Value = "2010/02" Or Range("E" & i).Value = "2010/03" Or Range("E" & i).Value = "2010/04" Or Range("E" & i).Value = "2010/05" Or Range("E" & i).Value = "2010/06" Or Range("E" & i).Value = "2010/07" Or Range("E" & i).Value = "2010/08" Or Range("E" & i).Value = "2010/09" Or Range("E" & i).Value = "2010/10" Or Range("E" & i).Value = "2010/11" Or Range("E" & i).Value = "2010/12" Or Range("E" & i).Value = "2011/01" Or Range("E" & i).Value = "2011/02" Then

deg2 = 0
For r = 1 To 50
If y = say(r) Or Range("E" & i).Value = say(r) Then
deg2 = 1
Exit For
End If
Next r
If deg2 = 1 Then
Range("P" & i).Value = "OE"
Else
Range("P" & i).Value = "TE"
End If
 
Else
Range("P" & i).Value = "OE"
End If
If Range("L" & i).Value = "Tarife Kodu" Then
Range("P" & i).Value = "ALACAKLI"
Range("Q" & i).Value = "AÇIKLAMA"
End If
If Range("H" & i).Value > 1000 Then
Range("Q" & i).Value = "1000 TL ÜST"
End If
If Range("H" & i).Value < 30 Then
Range("Q" & i).Value = "30 TL ALT"
End If
Next
 
Sayın ccuneyt13,

Kodlarınızı uzatmada, Elseif deneyebilirsiniz.

If a = 1 or a = 2 or a = 3 then (uzatmıyorum, kendi kodlarınız gibi uzun olarak düşünün)

...KODLARINIZ... (Şart gerçekleştiğinde ne yaptırıyorsanız)

Elseif a = 4 or a = 5 or a = 6 then (sorguya devam ediyoruz)

...KODLARINIZ... (Şart gerçekleştiğinde ne yaptırıyorsanız)

Elseif ..................... (aynı mantık, istediğiniz kadar ekleme yapabilirsiniz)

...KODLARINIZ... (Şart gerçekleştiğinde ne yaptırıyorsanız)

End if


İpucu = Bu ...KODLARINIZ... yazan yeri 1 modüle yerleştirin ve buraya onca satır yazmak yerine modülü çağırın.

İpucu ile örnek, ektedir.
 

Ekli dosyalar

Halit Bey ve Şaban Bey cevaplarınız için çok teşekkür ediyorum.

Şaban bey Elseif ile olayı çözdüm. Ayrıca birde & _ ile uzun kod satırlarını bölmek için kullanılabileceğini de araştırırken buldum. Buda işe yaradı.

Fakat Halit beyin vermiş olduğu kod sayesinde 15 grup için ayrı ayrı değişiklik yapmak yerine ilk başta o yoldan giderek sadece altına ilaveler yapıp diğer 15 grup için olayı bi seferde halledebilirmiyim düşüncesiyle yapmaya çalışıyorum.


Ayrıca Şaban bey ilettiğiniz ipucun da buraya uzun uzun kod yazmak yerine modül çağırabileceğimi belirtmişşiniz, cahillimizi mazur görün bu konuda nasıl yapabileceğimi araştırıyorum. Yardımı olacak bi konu başlığı varsa bildiğiniz paylaşırsanız mutlu olurum.

Birde Halit bey kullanıcıların kendi açmış oldukları sorulara geri dönüş yapmaması husunda cevap vermemenize kesinlikle hak veriyorum. Şahsen ben olsam bende cevap vermem. Lakin hiç cevap verilmemesiyle, geçde olsa gelen cevapların çeşitli mazaretlerden kaynaklanabileceği hususunu da değerlendirmeliyiz diye düşünüyorum.

Tekrar Halit ve Şaban Bey'e teşekkürlerimi sunuyorum.
 
Sayın ccuneyt13,

5 nolu mesajda modül çağırma ile ilgili örnek zaten var.
 
Geri
Üst