• DİKKAT

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

Kodları Modüle Yazmak yada Yazmamak

Katılım
22 Aralık 2005
Mesajlar
423
Excel Vers. ve Dili
Microsoft 365
Merhabalar arkadaşlar,

Aklımı kurcalayan bir soru var ve desteğinizi rica ediyorum.

Kodların VBA penceresinden nesneyi çift tıklatarak açılan kod penceresine yazmak ile modüle yazmak arasındaki farkı kavrayamıyorum. Her halükarda nesnenin olayını çalıştıracaksa neden modüle yazılsın veyahut modüle yazıyorsak neden nesneyi çift tıkladığımızda kod yazılabilecek bir sayfa açılıyor?
 
"VBA penceresinden nesneyi çift tıklatarak açılan kod penceresine yazmak" derken, oluşturulmuş bir userform yada üzerinde yer alan buton, listbox, label vd. nesneleri kastettiğinizi anlıyorum.
Userfom yada sayfa üzerine yerleştirilen nesnelere çift tıklamak suretiyle açılan pencere, varsayılan olarak Click olayıdır. Ancak sağ tarafta görünen bu olayları siz değiştirebilirsiniz. Belirlenen olay içine yerleştirilen kodlar o hareketle başlar ve biterler. Başka bir deyişle sadece belirlenen nesnenin belirlenen olayı ile çalışırlar. Modül içine yerleştirilen kodların farkı ise birden fazla nesne tarafından ihtiyaç doğrultusunda kullanılabilirler. Bu kodlardan istediklerinizi oluşturulan isimleri ile çağırıp çalıştırırsınız. istediklerinizi çalıştırmazsınız.
Pratik yaparak, mantığı daha iyi kavrarsınız.
 
Sayın antonio aynen anladığınız şekilde. Çok teşekkür ederim, gayet açıklayıcı oldu. O zaman ben bu nesne olaylarını hiç kullanmadan sadece modullere yazarak tüm programın olaylarını yönetebilirim doğru mudur? Mesela command button click olayını yada label.caption özelliğini modüle yazarak işletebilirim
 
Ben userformdaki nesneye çift tıklayarak yazıyorum.
O bana default olarak prosedürün başlangıcını ve sonunu yazıyor.Böyle daha iyi bence.:cool:
 
Aslına bakarsanız benimde tercihim buton, label, textbox ismi ne olursa olsun nesnenin içerisine kodu yazmak yönündeydi ancak sanki modüle yazarsam daha derli toplu olacakmış gibi de bir algı oluşuyor diğer taraftan. Hani Modul1 de X kodu var Modul2 de Y kodu var gibi.

Diğer taraftan bu soru işaretinin oluşmasının sebebi uzun zamandır üzerinde çalıştığım bir programın olmadık yerde DLL hatası vermesiydi. Userform üzerinde benzer nesneler olmasına rağmen aynı nesneden bir adet daha eklediğimde excel sayfası kaydedilemediği gibi DLL Error şeklide bir msgbox açıldı. Farklı kaydet deyince bile kaydedemedi. Hatanın buradan kaynaklandığını düşünmeye başlamıştım.

Özetle eğer hiçbir fark yok ise benim tercihim sayın Orion1'in aksine module yazmak yönünde olacak.
 
Yazarken bir syntax hatası yapmazsanız olur tabii.Sizin terciğiniz.:cool:
 
Sayın antonio aynen anladığınız şekilde. Çok teşekkür ederim, gayet açıklayıcı oldu. O zaman ben bu nesne olaylarını hiç kullanmadan sadece modullere yazarak tüm programın olaylarını yönetebilirim doğru mudur? Mesela command button click olayını yada label.caption özelliğini modüle yazarak işletebilirim

Şu şekilde yapmanızı tavsiye ederim: Diyelimki butona basınca hesaplama, belirlenen hücrelerde renk değiştirme, belli kriterde olan satır ve sütunların silinmesini istiyorsunuz. Bunun için Modüle hesapla, renklendir ve sil olaylarının kodlarını yazdınız. (Sanırım Sayın Evren GİZLEN tamda bu noktaya dikkatinizi çekti:) Nesnelerin olaylarını elle yazmak risklidir.
Bir butona çift tıklama olayını elle yazmaya kalkarsanız:
Kod:
Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
   .... (kodlarımız)
End Sub
şeklinde bir kodu hatasız yazabilme seviyesine sahip olmalısınız.
Bunun için nesnelere tek, çift tıklama ile harekete geçecek kodları yazmak için userform üzerinde ki nesneye çift tıklayarak, açılan kod penceresinden hangi olayını istiyorsanız seçin, otomatik olarak açılan kod penceresine Modülden istediğiniz kodları çağırın. Örnek:
Kod:
Private Sub CommandButton1_Click()
    Call hesapla
    Call renklendir
    Call sil
End Sub
 
Sayın Antonio ve Orion1 çok çok teşekkür ederim. Gerçekten aydınlandım :D Burası mükemmel bir yer...
 
Geri
Üst