makro kodlarını birleştirmek veya ayırmak

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
aynı sayfada işlem yapan uzun prosedürlerden oluşan bikaç makrom var ve birleştirmeye çalışınca sorun yaşadım.
1-) Private Sub Worksheet_Change ile Private Sub Worksheet_SelectionChange arasındaki fark nedir? hangi mantığı kullanır?

2-) kodların hepsini sayfanın kod bölümüne yazmak yerine Private Sub Worksheet_Change altında aşağıdaki gibi bir prosedür uygulasam ve asıl kodları modüllere ayrı ayrı yazsam ne kadar kullanışlı olur, sorun yaşarmıyım?

Private Sub Worksheet_Change(ByVal Target As Range)
'[a1:c10] aralığında işlem yapılıyorsa makro1 çalışsın
If Intersect(Target, [a1:c10]) Then
Call makro1
'[d1:g10] aralığında işlem yapılıyorsa makro2 çalışsın
If Intersect(Target, [d1:g10]) Then
Call makro2
'[h1:k10] aralığında işlem yapılıyorsa makro3 çalışsın
If Intersect(Target, [h1:k10]) Then
Call makro3
End Sub

3-)
Private Sub Worksheet_Change(ByVal Target As Range)
'[a1:c10] aralığında işlem yapılıyorsa makro1 çalışsın
If Intersect(Target, [a1:c10]) Then
Call makro1
End Sub
şeklinde denediğimde sorun çıkmadı ama makro2 için ilave ettiğimde End Sub satırında hata verdi, neden?
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Merhabalar

1. Change olayı, genel olarak, sadece herhangi bir hücreye bir değer girdiğinizde, değeri revize ettiğinizde devreyen girer. SelectionChange olayı, aktif hücre referansının değişmesi ile tetiklenir.

Örnek olarak, Eğer A1 hücresindeki değer değiştiğinde makronun çalışmasını istiyorsanız, bunu Change olay yordamı altına kodlamalısınız. Eğer A1 hücresine seçildiğinde makronun çalışmasını istiyorsanız, SelectionChange olayını kullanmalısınız.

2. Bazı makroların tetiklenmesi için seçime, bazılarının değişime ihtiyaç duyması halinde, sadece Change olay yordamına kod yazarsanız istediğiniz sonucu alamayabilirsiniz. Ama, makrolara çağrı yapmak genelde oldukça pratik bir yöntemdir. Kodları hantallaştırmaz.

3. Makro2, eğer koşul sağlanmadığında devreye girsin istiyorsanız, Else komutunu da, If-End If bloğuna eklemelisiniz.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
syn fpc çok yardımcı oldunuz, sanırım yapmam gerekeni anladım.
bu site sayesinde hergün yeni birşeyler öğreniyorum ve kendi çalışmama uyarlamaya çalıştığımda zorlanıyordum.
her yeniliği farklı bir modüle yazıp, sayfanın kod bölümünde uygun olan Change veya SelectionChange bölümüne yazarak makroyu çağırırsam sanırım sorun kalmayacak.
 
Üst