Makroları Göster Kutusu

Katılım
27 Haziran 2010
Mesajlar
394
Excel Vers. ve Dili
Türkçe 2010 Ofis
Selamlar arkadaşlar,

Kullanıcının Alt+F8, fare ile sağ klik veya hızlı erişim çubuğu aracılığıyla makrolara erişebileceği özellikleri kapatmak ve ihtiyaç duyulduğunda açmak için şifre sormasını sağlamak istiyorum, bunun bir yolu varmı arkadaşlar, teşekkürler. (Amacım istemediğim kişiler makrolara erişemesin...)
 

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
Selamlar arkadaşlar,

Kullanıcının Alt+F8, fare ile sağ klik veya hızlı erişim çubuğu aracılığıyla makrolara erişebileceği özellikleri kapatmak ve ihtiyaç duyulduğunda açmak için şifre sormasını sağlamak istiyorum, bunun bir yolu varmı arkadaşlar, teşekkürler. (Amacım istemediğim kişiler makrolara erişemesin...)
Merhaba

Kodları yazdığınız modüllerin en üstüne aşağıdaki satırı yazarsanız makrolar Excel menülerinde görünmez. Ayrıca VB editörüne şifre koyarsanız modüllere de ulaşılamaz.

Kod:
Option Private module
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Levent Beye ufak bir katkım olsun.
Option Private module

ifadesi en üstüne yazıldığı Modüle içindeki makroları göstermez.
Birden fazla modülünüz varsa her bir Modülün en başına eklemeniz gerekecek.
 
Katılım
27 Haziran 2010
Mesajlar
394
Excel Vers. ve Dili
Türkçe 2010 Ofis
Tekrar selamlar modülde tamamdır,peki sayfanın kodundaki için bir şey yapılabilir mi
 

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
Tekrar selamlar modülde tamamdır,peki sayfanın kodundaki için bir şey yapılabilir mi
Sayfanın kod sayfasına neden prosedür yazıyorsunuz. Normal prosedürleri bence normal modül içinde toplayın. Değiştirme şansınız yoksa aşağıdaki gibi deneyin. Ancak ismiyle bu prosedürü çağırdığınız başka prosedürler varsa çağırma kodunu değiştirmeniz gerekir..

Kod:
Private Sub deneme()
.
.
End Sub
 
Son düzenleme:
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Sayfanın kod sayfasına neden prosedür yazıyorsunuz. Normal prosedürleri bence normal modül içinde toplayın. Değiştirme şansınız yoksa aşağıdaki gibi deneyin. Ancak ismiyle bu prosedürü çağırdığınız başka prosedürler varsa çağırma kodunu değiştirmeniz gerekir..

Kod:
Private Sub deneme()
.
.
End Sub
Sayın uzmanım merhaba. Komut butonu kullanılacağı zaman mecburen Sayfa kısmına yazmamız gerekmiyor mu? Ben makro butonu kullanılacağı zaman modüle, komut butonu kullanılacağı zaman sayfaya yazılıyor diye biliyordum.
 

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
Sayın uzmanım merhaba. Komut butonu kullanılacağı zaman mecburen Sayfa kısmına yazmamız gerekmiyor mu? Ben makro butonu kullanılacağı zaman modüle, komut butonu kullanılacağı zaman sayfaya yazılıyor diye biliyordum.
Sayfa üzerindeki commandbutton olayları elbette içinde bulunduğu sayfanın kod sayfasına yazılır. Ancak bunların olayları zaten private olarak yazılır. Dolayısıyla menülerde görünmez. Aşağıdaki gibi.

Kod:
Private Sub CommandButton1_Click()
.
.
End Sub
 

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
İlave bilgi:

ActiveX veya Form denetimlerden eklediğiniz butonların kodlarını eğer sayfa modülüne yazarsanız; VBA projesini şifreleyerek korusanız bile birisi gelip de eğer o sayfayı başka bir Excel dosyasına taşırsa, sizin şifreleyerek gizlemeye çalıştığınız kodlar taşınan diğer Excel dosyasında deyim yerindeyse "kabak" gibi ortaya çıkar.

Bu nedenle, her 2 çeşit buton kullanımında esas kodlar kesinlikle sayfa modülünde değil, eklenecek standart bir modüle yerleştirildikten sonra butonlara yazılacak kodlarla, modüldeki kodlar çağırılarak kullanılmalıdır.

Örnek olarak Sayfa1 modülündeki ActiveX buton için;

C#:
Private Sub CommandButton1_Click()
    Call Test
End Sub
Module1 içerisinde;

C#:
Sub Test()
    MsgBox "Merhaba"
End Sub

Form Denetim kontrollerinden eklenen buton için zaten Module1 içindeki makroyu butona atayabilirsiniz....

.
 
Katılım
27 Haziran 2010
Mesajlar
394
Excel Vers. ve Dili
Türkçe 2010 Ofis
Haluk hocam çok faydalı bir bilgi oldu, sağolasın, size de çok çok teşekkür ederim.
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
İlave bilgi:

ActiveX veya Form denetimlerden eklediğiniz butonların kodlarını eğer sayfa modülüne yazarsanız; VBA projesini şifreleyerek korusanız bile birisi gelip de eğer o sayfayı başka bir Excel dosyasına taşırsa, sizin şifreleyerek gizlemeye çalıştığınız kodlar taşınan diğer Excel dosyasında deyim yerindeyse "kabak" gibi ortaya çıkar.

Bu nedenle, her 2 çeşit buton kullanımında esas kodlar kesinlikle sayfa modülünde değil, eklenecek standart bir modüle yerleştirildikten sonra butonlara yazılacak kodlarla, modüldeki kodlar çağırılarak kullanılmalıdır.

Örnek olarak Sayfa1 modülündeki ActiveX buton için;

C#:
Private Sub CommandButton1_Click()
    Call Test
End Sub
Module1 içerisinde;

C#:
Sub Test()
    MsgBox "Merhaba"
End Sub

Form Denetim kontrollerinden eklenen buton için zaten Module1 içindeki makroyu butona atayabilirsiniz....

.
Haluk uzmanım merhaba
Verdiğiniz bilgiler için size ve Levent uzmanımıza teşekkür ederiz
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Bir amatör olarak bir ilave bilgi de ben vereyim (deneme yanılmayla fark ettim az önce)

Dosyalarımdan birinin, “Bu Çalışma Kitabı” kısmının kod bölümünde Private Sub Workbook Open ile başlayan bir kod vardı.

“Sayfa1” kod bölümünde de “Private sub command buton” lu bir kod vardı.

Haluk uzmanımın verdiği bilgileri sayfa bölümünde aynen yaptıktan sonra,
“Bu Çalışma Kitabı” bölümündeki kodlara hiç dokunmadım.

Dosyanın (sadece) kodlar bölümünü şifreleyip kapatıp açtıktan sonra görünen sayfayı bir başka yeni dosyaya kopyaladım.

Ve yeni dosyayanın sayfa bölümüne baktığımda, sadece Call kısmının olduğunu gördüm.

Yani orjinal dosyamın “Bu Çalışma Kitabı” bölümündeki kodlar,
yeni kopya dosyada; yoktu. Bomboştu.

İyi de oldu doğrusu.

Yani bu çalışma kitabı bölümündeki workbook open ile başlayan kodları, bir modüle taşımadığım halde,
Kopyalanmamışlardı.
 

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
Ve yeni dosyayanın sayfa bölümüne baktığımda, sadece Call kısmının olduğunu gördüm.

Yani orjinal dosyamın “Bu Çalışma Kitabı” bölümündeki kodlar,
yeni kopya dosyada; yoktu. Bomboştu.

İyi de oldu doğrusu.

Yani bu çalışma kitabı bölümündeki workbook open ile başlayan kodları, bir modüle taşımadığım halde,
Kopyalanmamışlardı.

Şaşıracak bir şey yok, siz sadece ilgili sayfayı (dolayısıyle de o sayfanın modülünü) taşımışınız. ThisWorkbook modülü, içinde bulunduğu dosyaya aitttir.


.
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Şaşıracak bir şey yok, siz sadece ilgili sayfayı (dolayısıyle de o sayfanın modülünü) taşımışınız. ThisWorkbook modülü, içinde bulunduğu dosyaya aitttir.


.
Haluk uzmanım bir küçük soru

Buçalışmakitabı bölümündeki Private Sub Workbook_open
ile
Modüldeki
Sub auto_open

zannettiğim kadarıyla ikisi de aynı işi yapıyor. Yani dosya açıldığı zaman içindeki kodlar otomatik çalışıyor.

Bunun dışında başka hangi amaçlarla kullanılır, farkları nelerdir, biraz bahseder misiniz? Zira önemli ve keyifli bir konu bu.

Bir de Private sub ile normal sub arasındaki farklar nelerdir. Hep merak etmişimdir.
Private sub sayfa bölümüne,
Sub ise modül bölümünde ikisi de kod çalıştırıyor. Ama biri var; diğeri niye var?
 

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
Haluk uzmanım bir küçük soru

Buçalışmakitabı bölümündeki Private Sub Workbook_open
ile
Modüldeki
Sub auto_open

zannettiğim kadarıyla ikisi de aynı işi yapıyor. Yani dosya açıldığı zaman içindeki kodlar otomatik çalışıyor.

Bunun dışında başka hangi amaçlarla kullanılır, farkları nelerdir, biraz bahseder misiniz? Zira önemli ve keyifli bir konu bu.
Gerçi Haluk beye sormuşsunuz ama sorunuzun ilk kısmına ben cevap vereyim. İkinci kısmı Haluk bey çok daha teknik detayıyla açıklayacaktır.

"Private Sub Workbook_open" dosyanın Thisworkbook modülüne yazılır. "Sub auto_open"ise normal modüle. İkiside aynı işlevi görürler. Aralarında sadece öncelik farkı vardır. Dosya açılırken "Private Sub Workbook_open" daha önce işlem yapacaktır. Bunun dışında başka bir farkı varmıdır bilmiyorum.
 
Üst