Makroları Göster Kutusu

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Israrla okumaya çalışmanızı istememdeki sebebi söyleyeyim o zaman.

1. Yorumlanacak bir şey yok ortada. Kural belli, yöntem belli, kodlamada kullanılacak ifadeler belli. Yoruma açık bir konu değil.
2. Excel ve VBA ile uğraşacak ya da kullanacaksanız bu dokümanları makaleleri okumaya alışmalısınız. Zira en büyük yardımcınız bunlar.
3. Ben de zorlandığım anlamadığm yapamadığım bir konu olunce ne nasıl yazılıyor, kuralı neymiş gibi sorularıma bu makalelerde cevap buluyorum.
4. Ben sadece size balık tutmayı öğretmeye çalışıyorum.
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Israrla okumaya çalışmanızı istememdeki sebebi söyleyeyim o zaman.

1. Yorumlanacak bir şey yok ortada. Kural belli, yöntem belli, kodlamada kullanılacak ifadeler belli. Yoruma açık bir konu değil.
2. Excel ve VBA ile uğraşacak ya da kullanacaksanız bu dokümanları makaleleri okumaya alışmalısınız. Zira en büyük yardımcınız bunlar.
3. Ben de zorlandığım anlamadığm yapamadığım bir konu olunce ne nasıl yazılıyor, kuralı neymiş gibi sorularıma bu makalelerde cevap buluyorum.
4. Ben sadece size balık tutmayı öğretmeye çalışıyorum.
Aslında “yorum” derken cevabınızı kastetmiştim. (Kelimeye takılmayın lütfen). Çünkü excel konusunda oldukça iyi olduğunuzu biliyorum.

Sorumu yineleyeyim. Sayfaya yazılan Private sub ile modüle yazılan normal sub arasında, (ikisi de kodları çalıştırdığı için) önemli farklar, özellikler var mıdır?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aslında “yorum” derken cevabınızı kastetmiştim. (Kelimeye takılmayın lütfen). Çünkü excel konusunda oldukça iyi olduğunuzu biliyorum.

Sorumu yineleyeyim. Sayfaya yazılan Private sub ile modüle yazılan normal sub arasında, (ikisi de kodları çalıştırdığı için) önemli farklar, özellikler var mıdır?
Ömer beye katılmakla beraber öğrenme azminizi de köreltmemek adına bir kaç cümle yazayım. Daha detayını arzu eden üyelerimiz ekleyebilirler.

Private kelimesinin Türkçe karşılığı özel, kişisel yada kişiye özel olarak sözlüklerde yer alır. Dolayısıyla Private Sub olarak yazılan prosedürde yazıldığı modüle özeldir yani ona aittir. Dolayısıyla bu prosedürleri başka modüllerden çağıramazsınız. Bu sebeple "sayfa" yada "thisworkbook" modülündeki tüm mevcut prosedürler Private Sub olarak yazılır. Sadece Sub (subroutine kelimesinin kısaltılmışı) olarak yazılan modüller aslında Public (genel) prosedürlerdir ve proje içindeki tüm modüllerden çağrılabilirler.
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Ömer beye katılmakla beraber öğrenme azminizi de köreltmemek adına bir kaç cümle yazayım. Daha detayını arzu eden üyelerimiz ekleyebilirler.

Private kelimesinin Türkçe karşılığı özel, kişisel yada kişiye özel olarak sözlüklerde yer alır. Dolayısıyla Private Sub olarak yazılan prosedürde yazıldığı modüle özeldir yani ona aittir. Dolayısıyla bu prosedürleri başka modüllerden çağıramazsınız. Bu sebeple "sayfa" yada "thisworkbook" modülündeki tüm mevcut prosedürler Private Sub olarak yazılır. Sadece Sub (subroutine kelimesinin kısaltılmışı) olarak yazılan modüller aslında Public (genel) prosedürlerdir ve proje içindeki tüm modüllerden çağrılabilirler.
Çok teşekkürler Levent uzmanım.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
"Private Sub Workbook_Open()" makrosu dosya açıldığında meydana gelen "Open" event'i (olay) sırasında çalışan bir makrodur.

"Sub Auto-Open()" ise, Excel'in kütüphanesinde "XlRunAutoMacro" başlığı altında yer alan ve ismini tanıdığı için görür görmez çalıştırdığı bir prosedür adıdır.

"Niye her ikisi de var ?" ..... Sorusunun muhtemel cevabı bana göre; "Auto-Open" makroları VBA'den önce kullanılan "Excel4" makrolarında yer alan bir komponent olduğundan, Excel'in VBA ile gelişen sonraki versiyonlarında da "Excel4" makroları desteklendiğinden, VBA tarafında da desteklenmesinden ibarettir.


.Capture.PNG
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
...........Dolayısıyla Private Sub olarak yazılan prosedürde yazıldığı modüle özeldir yani ona aittir. Dolayısıyla bu prosedürleri başka modüllerden çağıramazsınız.
.......
....
Levent arkadaşıma ufak bir ilave yapayım ......

Dosyadaki bir modüle yazılan "Private" prosedürü, makro kutusunda görülmediği için ve adındaki "Private" kelimesinin sözlük anlamı gereği sadece içinde bulunduğu modülde çağrılabilir, kullanılabilir ..... gibi düşünülse de, durum aslında pek öyle değildir.

Denemek için;

- Yeni bir Excel dosyası açın ve bir modül ilave edin. Diyelim ki adı "Module1"

- Bu modüle aşağıdaki prosedürü yapıştıralım;

C#:
Private Sub Test()
    MsgBox "Merhaba"
End Sub
- Şimdi dosyaya bir modül daha ilave edelim, diyelim bunun adı da "Module2"

- Bu 2.module de aşağıdaki prosedürü yapıştıralım;

C#:
Sub TestMacro()
    Application.Run ("Module1.Test")
End Sub
- "Module2" içindeki "TestMacro" makrosunu çalıştırdığınızda, o da gidip "Module1" içinde gizlenmiş ve özelleştirilmiş olduğunu düşündüğümüz "Test" isimli makroyu, sorgusuz sualsiz aslanlar gibi çalıştıracaktır.

Bu hikayeden çıkan sonuç şudur;

Bir modüldeki "Private" olarak deklare ettiğimiz prosedürün eğer adını ve hangi modülde olduğunu biliyorsak, onu başka bir modülden çağırıp, kullanabiliriz. Ama, bu bilgiyi bilmeyen birisi yapamaz....


.
 
Son düzenleme:

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bir modüldeki "Private" olarak deklare ettiğimiz prosedürün eğer adını ve hangi modülde olduğunu biliyorsak, onu başka bir modülden çağırıp, kullanabiliriz. Ama, bu bilgiyi bilmeyen birisi yapamaz....
Haluk hocam artık bilmeyen kalmadı :)
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Haluk hocam artık bilmeyen kalmadı :)
Âlemsin ... :)

Yine de açıklık getireyim de, benim orda demek istediğim yanlış anlaşılmasın....

Dosyayı bir başkasına verdiğimizde, o kişi makronun adını ve içinde bulunduğu modülü bilmiyorsa yapamaz demek istemiştim.

.
 
Üst