SelectionChange(ByVal Target As Range) Daha fazla group ekleme

Katılım
6 Eylül 2007
Mesajlar
655
Excel Vers. ve Dili
excel 2016 32 Bit ve Excel 2020 32 Bit Türkçe ve İngilizce
Altın Üyelik Bitiş Tarihi
10-12-2024
Arkadaşlar merhaba; Private Sub Worksheet_SelectionChange(ByVal Target As Range) ile excel sayfama bazı group'ların gelmesini istiyorum. Aşağıda örneğini verdiğim kod'lar ile bu işlemi yapabiliyorum. Benim sıkıntım IF/ELSE IF / END IF toplamda 113 adet'ten fazla olunca kod'lar çalışmıyor ve "Procedure Too Large" ikaz'ı veriyor. Benim 113 den daha fazla işlem yaptırmam gerekiyor. Bunun imkanı varmı yardım lütfen.

Örnek kodlar:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Sayfa105.Range("J16") = 1 Then

ActiveSheet.Shapes("Group 227").Visible = False

ActiveSheet.Shapes("Group 183").Visible = False

ActiveSheet.Shapes("Group 146").Visible = False

ActiveSheet.Shapes("Group 113").Visible = True

Else

If Sayfa105.Range("J16") = 2 Then

ActiveSheet.Shapes("Group 225").Visible = False

ActiveSheet.Shapes("Group 30").Visible = False

ActiveSheet.Shapes("Group 22").Visible = True

ActiveSheet.Shapes("Group 15").Visible = True



Else

If Sayfa105.Range("J16") = 3 Then

ActiveSheet.Shapes("Group 225").Visible = False

ActiveSheet.Shapes("Group 30").Visible = True

ActiveSheet.Shapes("Group 22").Visible = True

ActiveSheet.Shapes("Group 15").Visible = True



Else

If Sayfa105.Range("J16") = 4 Then

ActiveSheet.Shapes("Group 225").Visible = True

ActiveSheet.Shapes("Group 30").Visible = True

ActiveSheet.Shapes("Group 22").Visible = True

ActiveSheet.Shapes("Group 15").Visible = True

Else

If Sayfa105.Range("J16") = 5 Then

ActiveSheet.Shapes("Group 225").Visible = True

ActiveSheet.Shapes("Group 30").Visible = True

ActiveSheet.Shapes("Group 22").Visible = True

ActiveSheet.Shapes("Group 15").Visible = True

End If

End If

End If

End If

End If



If Sayfa18.Range("C140") = 2 And Sayfa18.Range("I124") = 1 And Sayfa18.Range("I122") = 5 Then

ActiveSheet.Shapes("Group 319").Visible = True

ActiveSheet.Shapes("Group 447").Visible = False

ActiveSheet.Shapes("Group 759").Visible = False

ActiveSheet.Shapes("Group 647").Visible = False



Else

If Sayfa18.Range("C140") = 2 And Sayfa18.Range("I124") = 2 And Sayfa18.Range("I122") = 5 Then

ActiveSheet.Shapes("Group 319").Visible = False

ActiveSheet.Shapes("Group 447").Visible = True

ActiveSheet.Shapes("Group 759").Visible = False

ActiveSheet.Shapes("Group 647").Visible = False

Else

If Sayfa18.Range("C140") = 1 And Sayfa18.Range("I124") = 2 And Sayfa18.Range("I122") < 5 Then

ActiveSheet.Shapes("Group 319").Visible = False

ActiveSheet.Shapes("Group 447").Visible = False

ActiveSheet.Shapes("Group 759").Visible = True

ActiveSheet.Shapes("Group 647").Visible = False



Else

If Sayfa18.Range("C140") = 1 And Sayfa18.Range("I124") = 1 And Sayfa18.Range("I122") < 5 Then

ActiveSheet.Shapes("Group 319").Visible = False

ActiveSheet.Shapes("Group 447").Visible = False

ActiveSheet.Shapes("Group 759").Visible = True

ActiveSheet.Shapes("Group 647").Visible = False



Else

If Sayfa18.Range("C140") = 1 And Sayfa18.Range("I124") = 2 And Sayfa18.Range("I122") = 5 Then

ActiveSheet.Shapes("Group 319").Visible = False

ActiveSheet.Shapes("Group 447").Visible = False

ActiveSheet.Shapes("Group 759").Visible = False

ActiveSheet.Shapes("Group 647").Visible = True



Else

If Sayfa18.Range("C140") = 1 And Sayfa18.Range("I124") = 1 And Sayfa18.Range("I122") = 5 Then

ActiveSheet.Shapes("Group 319").Visible = False

ActiveSheet.Shapes("Group 447").Visible = False

ActiveSheet.Shapes("Group 759").Visible = False

ActiveSheet.Shapes("Group 647").Visible = True



End If

End If

End If

End If

End If

End If

'Böyle devam ediyor End If 113 den fazla olunca " Procedure Too Large" sinyali veriyor.




End Sub
 

Ekli dosyalar

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,490
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Bu kodlarla nasıl bir yardım alacağınızı sanıyorsunuz?

Örnek dosya yok, gerekli açıklama yok.

Büyük olasılıkla yardım da olmayacaktır.
 
Katılım
6 Eylül 2007
Mesajlar
655
Excel Vers. ve Dili
excel 2016 32 Bit ve Excel 2020 32 Bit Türkçe ve İngilizce
Altın Üyelik Bitiş Tarihi
10-12-2024
Sn Necmettin bey kod’lar çok uzun ve toplamda 45 adet group nesne bulunuyor. Bu neden ile örnek dosya hazırlayamadım, ancak kod’ların bir kısmını yazdım , bu şekilde “ if “ ile başlayan ve “ else “ ile şartlar sunan sonra “ end if” ile kapatılan belirli hücre değerlerine göre sayfaya gelen “group” lar ile ilgili kod’lardır. Burda 113 tane if - else - end if çalışıyor ancak fazla olunca “ procedure too large “ ikaz’ı veriyor.
 

kulomer46

Altın Üye
Katılım
23 Mart 2007
Mesajlar
1,514
Excel Vers. ve Dili
Microsoft Office LTSC Professional Plus 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
08-06-2027
Değerli arkadaşım

" Procedure too large “ mesajı kod satırında tek bir prosedür içerisinde bulunması gereken sınırdan daha fazla kod ve kod satırı bulunduğu anlamına gelmektedir.

Bunu çözmek için prosedür içerisinde başka bir prosedür çağırmanız lazım.

Mesela aşağıdaki örnekte Aktar1 prosedürünün çok fazla kod satırı içerdiğini düşünelim.
Bu kodların bir kısmını Aktar2 ye bir kısmını Aktar3 e aktardığımızda programız düzgün şekilde çalışacaktır.

Sub Aktar1()
...
...
...
call Aktar2
call Aktar3
...
...

end sub


Sub Aktar2()
...
...
...
end sub


Sub Aktar3()
...
...
...

end sub

Selamlar...
 
Son düzenleme:
Katılım
6 Eylül 2007
Mesajlar
655
Excel Vers. ve Dili
excel 2016 32 Bit ve Excel 2020 32 Bit Türkçe ve İngilizce
Altın Üyelik Bitiş Tarihi
10-12-2024
Merhaba kulomer46 bu kod'lar "Private Sub Worksheet_SelectionChange(ByVal Target As Range) " altında yazılı bunu nasıl bölebilirim?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
-
-
-

End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
-
-
-
End Sub

olmuyor?
 
Katılım
6 Eylül 2007
Mesajlar
655
Excel Vers. ve Dili
excel 2016 32 Bit ve Excel 2020 32 Bit Türkçe ve İngilizce
Altın Üyelik Bitiş Tarihi
10-12-2024
Sayın kolomer46 çok teşekkürler yaptım, 2 adet module kopyalayıp call ile çağırdım oldu :)
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,490
Excel Vers. ve Dili
Ofis 365 Türkçe
Sn Necmettin bey kod’lar çok uzun ve toplamda 45 adet group nesne bulunuyor. Bu neden ile örnek dosya hazırlayamadım, ancak kod’ların bir kısmını yazdım , bu şekilde “ if “ ile başlayan ve “ else “ ile şartlar sunan sonra “ end if” ile kapatılan belirli hücre değerlerine göre sayfaya gelen “group” lar ile ilgili kod’lardır. Burda 113 tane if - else - end if çalışıyor ancak fazla olunca “ procedure too large “ ikaz’ı veriyor.
Necmettin kim?
 
Üst